树和二叉树(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 小时前
AI 音乐产品的发布工程:验证门、数据发布、回滚与生产运维纪律
数据结构·数据库·架构·node.js·音视频·动态规划·推荐算法
C++ 老炮儿的技术栈2 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
青山木5 小时前
Hot 100 --- 最长有效括号
java·数据结构·算法·leetcode·动态规划
爱吃苹果的日记本7 小时前
数据结构第五课
数据结构·学习
Logic1018 小时前
C语言/数据结构贪心算法题解:买卖股票的最佳时机——一次交易最大利润(O(n)时间O(1)空间)
c语言·数据结构·贪心算法·数组·时间复杂度·算法题·股票交易
Logic1019 小时前
C语言/数据结构位运算题解:异或XOR找出货币交易中的“独特面值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
ctlover9 小时前
数据结构:树
数据结构·python
景熙552310 小时前
14.Java 集合框架从入门到源码万字详解(含 ArrayList/LinkedList/HashMap 源码、泛型通配符、红黑树)
java·开发语言·数据结构·算法
SendTomo11 小时前
.ico透明图标在线生成下载平台深度解析
大数据·数据结构·数据库·数据仓库·个人开发
GG-_-Bond11 小时前
9.1kv存储持久化模拟面试
linux·c语言·数据结构·c++