树和二叉树(1)

树和二叉树

一.树

1.基本术语和属性

(一).度

度:指的是一个节点的孩子被称为度,其中节点最大的度被称为树的度。如图:其中A有3个孩子,并且在这棵树中只有A的度最大,那么3就是这个树的度。

(二).叶子节点

叶子节点:指没有孩子的节点(度为0的节点)被称为叶子节点。如图:K,L,G,M,I都是度为0的节点,那么这几个节点被称为叶子节点。

(三).分支节点

分支节点:除了叶子节点的那几个,其余的都是分支节点。(度不为0的节点)

(四).树的高度

树的高度:根节点到叶子节点最多的节点被称为树的高度,如:A->M,A->L,A->K,的节点个数都是四,所以树的高度是四。

(五).有序树/无序树

有序树/无序树:从左到右有次序的就叫有序树,否则是无序树。

(六).路径

路径:两个节点经过的节点被称为路径。如:A->L就是路径,长度为4。

2.性质

性质一:树的结点=所有结点的度+1;

拿上图举例:这是一棵度为3的树,那么它是由N0+N1+N2+N3组成,N0表示度为0的节点,N1表示度为1的节点等等,N3表示度为3的节点相加组成了这一棵树。其中N0有6个,N1有2个,N2有3个,N3有1个

所以2 * 1+2 * 3+3 * 1+1=12;

性质二:M叉树中第i层上最多有m^ (i-1)个结点

列如:一棵3叉树在每个度都为3的前提下,那么第3层最多有3^(3-1)=9个结点。

性质三:高度为h的M叉树至多有m^h-1/m-1个结点

列如:一棵3叉树在每个度都为3的前提下,此时这个高度为3的树的所有结点最多 为3^3-1/3-1=13个结点。

如图:这是一个度为4的树,那么就由N0+N1+N2+N3+N4组成,

题目要求我们求叶结点的个数,那就是度为0的个数,我们可以先把总的个数给求出来,用上述公式:总=( 204+10 3+12+101 ) +1=123个,又因为说有20个度为4的结点,就减去20,10个度为3的结点,减去10,...最后剩下的就是叶子结点的个数 123-20-10-1-10=82,所以选B.

二.二叉树

1.二叉树的定义

什么是二叉树,就是树的度为2,并且树分根,左子树和右子树且它门次序不能颠倒。

2.特殊的二叉树

1.满二叉树

满二叉树就是一个从根到叶子结点之间,每个结点的度都是2,拿上述的性质三来验证,m^h-1/m-1= 2^3-1/2-1=7,达到最大的结点就是满二叉树。

2.完全二叉树

1.这个树的最后一层可以不用达到最大的个数,但必须遵守从左到右的连续顺序

2.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。

3.完全二叉树的结点个数在【2^(h-1), 2^h-1】,为什么高度会是这样呢前者是为求前h-1的个数,后者是把第h层的最大个数给求出。那么完全二叉树一定在这两个区间之间

4.完全二叉树的叶子出现在最后两层,且度为1的最大只有一个,剩下的都是度为0或者度为2,由上图可得。

性质

1.性质一:二叉树第i层的个数为2^(i-1)

2.性质二:高度为h的二叉树最多有2^h-1个

3.性质三:对于任何一个二叉树如果度0有N0个,度2有N2个则N0=N2+1

M=N0+N1+N2=N1+2N2+1 可以推出:N0=N2+1;

例题一

由于是一棵完全二叉树,第六层的个数为2^(6-1),其中有8个是叶子结点,那么其余的24个不是叶子结点,就表示都有度,那么求的是最多,就把另外的24个都想成度为2的时候,那么此时结点个数最多

2^6-1求出前6层的个数,再加上48即可为111个 答案:C。

例题二

总个数=N0+N1+N2=768,由性质三可得2N0+N1-1=768,又因为完全二叉树中,N1的个数最多为1个,那么N1可能为0或者1,当为0的时候,N0无法得到整数,所以只能为N1,最后N0为384个 答案:C.

相关推荐
旖旎夜光1 小时前
LeetCode 397:整数替换(贪心问题) —— 题解
数据结构·c++·算法·leetcode·贪心算法
bbq粉刷匠2 小时前
ArrayList 整体认识
java·jvm·数据结构
wabs6662 小时前
关于哈希表【力扣1.两数之和的思考】
数据结构·算法·leetcode·散列表·图论
Hhy_11072 小时前
【从零开始学数据结构 ⑥】:二叉树之堆——打破规则的优先队列
c语言·开发语言·数据结构·学习·visual studio
星轨初途3 小时前
LeetCode 热题 100——day7 接雨水
数据结构·c++·笔记·算法·leetcode·职场和发展
qeen873 小时前
【数据结构】搜索二叉树的介绍与算法原理解析及实现
数据结构·c++·学习·算法·模板
小星星闪亮登场14 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
计算机小白一个14 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯
Loge编程生活14 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程