我是靠谱客的博主 单薄毛豆,最近开发中收集的这篇文章主要介绍c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...第四章:树与二叉树(二叉树的逻辑结构)1.二叉树2.二叉树VS度为2的有序树3.特殊二叉树3.1满二叉树3.2完全二叉树3.3二叉排序树3.4平衡二叉树4.二叉树的性质4.1n0=n2+14.2性质24.3性质34.4性质44.5性质54.6性质6,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第四章:树与二叉树(二叉树的逻辑结构)

1.二叉树

二叉树是树结构的一种,故二叉树也是逻辑结构。

二叉树:二叉树是n(n≥0)个结点的有限集合。

· 1)n=0时,二叉树为空;

· 2)n>0时,由根结点和两个互不相交的被称为根的左子树和右子树组成。左子树和右子树也分别是一棵二叉树。

五种基本形态

3269a8886fa93d0cef5e9716b2cacee2.png

三个结点的二叉树有多少种??

b53a85d3b16b611389cbdaf82c536d05.png

2.二叉树VS度为2的有序树

· 1)二叉树可以为空,而度为2的有序树至少有三个结点

度为2的有序树,则说明必须有一个结点的子节点为两个

· 2)二叉树的孩子结点始终有左右之分,而度为2有序树的孩子结点次序是相对的

在度为2的有序树中,如果有一个结点只有一个孩子结点,则是不分左右的。

997a06cad8bc9a8032551334f801290c.png

3.特殊二叉树

3.1满二叉树

满二叉树:一棵高度为h,且含有2^h-1个结点的二叉树为满二叉树。

上篇文章中讲树的时候我们知道:高度为h的m叉树至多有(m^h-1)/(m-1) 个结点。这里我们把m换成2,即可。

f97077af2f9535022df38f306ab7cc1f.png

编号规则:从上到下、从左到右;

观察上述编号可以发现下面结论:

对于编号为 i 的结点,若存在,其双亲的编号为(i/2取整),左孩子为2i,右孩子为2i+1

3.2完全二叉树

完全二叉树:设一个高度为h、有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号1~n的结点一 一对应时,称为完全二叉树。

0525e07db2392817a2a6d3970344fda5.png
76b0e359a83e02abaabf7f57c56c61e5.png
dd86b36e51ff00df0331ef0da3127fd4.png

我们可以发现,如果一个二叉树是完全二叉树,则此二叉树除了最后一层结点数不满外,其余层结点数都是满的。

完全二叉树的性质

· 若 i <= n/2 取整数,则结点 i 为分支结点,否则为叶子结点。

i 是结点编号,n 是结点的总数。

· 叶子结点只可能在层次最大的两层上出现。对于最大层次的叶子结点,都依次排在最左边的位置上。

· 度为1的结点若存在,则可能只有一个,且是编号最大的分支结点,并且孩子结点一定是左结点。

因为完全二叉树的编号是按照从上到下,从左到右编号的,而且除了最后一层结点数不满外,其余层结点数都是满的,所以度为1的结点可能存在也可能不存在,如果存在只可能在最后一个结点的双亲结点才能出现度为1的结点。

所有的性质都紧紧依赖完全二叉树的编号是从上到下,从左到右的。

3.3二叉排序树

二叉排序树:一棵二叉树,若树非空则具有如下性质:

· 对任意结点若存在左子树或右子树,则其左子树上所有结点的关键字均小于该结点。

· 右子树上所有结点的关键字均大于该结点。

可以发现二叉排序树的左子树和右子树都是一棵二叉排序树。

3007fbeb5e6a6ad4ea528c078581dc58.png

3.4平衡二叉树

247079ad745717d90bdbe9a43ec5698e.png

平衡二叉树:树上任意结点的左子树和右子树的深度差不超过1

f复习:高度和深度的定义,某节点的深度是指从根节点到该节点的最长简单路径边的条数,而高度是指从该节点到叶子节点的最长简单路径边的条数。记住:深度是从根结点到该结点的边数的,而高度是从叶子节点往上数到该结点的边数。注意:这里边的条数是规定根节点的深度和叶子节点的高度是0;所以树的深度和高度是相等的,而对其他节点来说深度和高度不一定相等。

429fbd5637266aecfa958a6a3a0a0df4.png

上图就不是一个平衡二叉树:

上图根结点的左子树深度为3,右子树深度为2,3-2=1,没问题,但是A结点的左子树深度为2,而A结点的右子树深度为0,2-0=2>1,不对。

4.二叉树的性质

4.1n0=n2+1

· 非空二叉树上的叶子结点数等于度为2的结点数加1,即n0=n2+1.

247079ad745717d90bdbe9a43ec5698e.png

如图上述二叉树:

· 首先我们知道二叉树的结点数等于各种度数二叉树结点的和,即n=n0+n1+n2。

· 另外n=0*n0+1*n1+2*n2+1,这个计算方法是按照子节点个数计算的,0*n0代表叶子节点的子节点数(叶子结点子节点数为0,故乘以0),1*n1代表子节点数为1的结点的个数,2*n2代表子节点数为2的结点的个数,最后加上1,代表根结点。

将上面的两个关于n的式子相减即可得到:n0=n2+1

4.2性质2

非空二叉树上第 k 层上至多有 2^(k-1)个结点(k≥1)

0f472e3c5f4d3bc24cf3ce24118afe38.png

4.3性质3

高度为h的二叉树至多有2^h -1个结点(h>=1) [满二叉树结点的总数]

4.4性质4

4)对完全二叉树按从上到下、从左到右的顺序依次编号1,2,....n,则有以下关系:

· 当 i>1 时,结点的双亲结点标号为 i/2 取整数, 即当 i 为偶数时,其双亲结点的编号为 i/2 ,他是双亲结点的左孩子;当为奇数时,其双亲结点的编号为(i-1)/2, 他是双亲结点的右孩子。

· 当 2i <= n 时,结点 i 的左孩子编号为 2i ,否则无左孩子

· 当 2i+1<=n 时,结点 i 的右孩子编号为 2i+1,否则无右孩子

f97077af2f9535022df38f306ab7cc1f.png

4.5性质5

d1d982536bade5f52257fbd58f737dbc.png

则第h层,2^(h-1) =< i < 2^h ,对该式子两端取对数,则h-1 =< log2i< h,我们对log2i取下界,则得到h-1,再加1则得到系欸但所在的层次:[log2i] +1

4.6性质6

4bf4815f04a2f91db4f55f43771e2567.png

由性质3:高度为h的二叉树至多有2^h -1个结点(h>=1)。令2^h -1=n,则可以推出 h = log2(n+1),至于这里为啥要取上界,是因为这个性质3,是按照满二叉树情况,但是完全二叉树的最后一层结点数不一定能达到最多,但也要算一层。

关于数据结构的知识,持续更新中,欢迎关注,也可以关注同名公众号 理木客

eb3d5f29ddf26c34b993e7f280e87b68.png

最后

以上就是单薄毛豆为你收集整理的c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...第四章:树与二叉树(二叉树的逻辑结构)1.二叉树2.二叉树VS度为2的有序树3.特殊二叉树3.1满二叉树3.2完全二叉树3.3二叉排序树3.4平衡二叉树4.二叉树的性质4.1n0=n2+14.2性质24.3性质34.4性质44.5性质54.6性质6的全部内容,希望文章能够帮你解决c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...第四章:树与二叉树(二叉树的逻辑结构)1.二叉树2.二叉树VS度为2的有序树3.特殊二叉树3.1满二叉树3.2完全二叉树3.3二叉排序树3.4平衡二叉树4.二叉树的性质4.1n0=n2+14.2性质24.3性质34.4性质44.5性质54.6性质6所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部