理论教育 数据结构高分笔记:二叉树主要性质解析

数据结构高分笔记:二叉树主要性质解析

时间:2023-11-03 理论教育 版权反馈
【摘要】:结点最多的情况即为满二叉树的情况,此时二叉树每层上的结点数构成了一个首项为1、公比为2的等比数列。换句话说,满二叉树中前k层的结点个数为2k-1。图6-5 有5个结点的完全二叉树性质5 函数Catalan():给定n个结点,能构成h种不同的二叉树,性质6 具有n(n≥1)个结点的完全二叉树的高度(或深度)为[log2n]+1。证明:由性质3可知:2h-1-1<n≤2h-1,其中h为完全二叉树的高度。

数据结构高分笔记:二叉树主要性质解析

性质1 非空二叉树上叶子结点数等于双分支结点数加1。

证明:设二叉树上叶子结点数为n0,单分支结点数为n1,双分支结点数为n2,则总结点数为n0+n1+n2。在一棵二叉树中,所有结点的分支数等于单分支结点数加上双分支结点数的两倍,即总的分支数为n1+2n2

由于二叉树中除根结点之外,每个结点都有唯一的一个分支指向它,因此二叉树中有总分支数=总结点数-1(显然这一条结论对于任何树都是适用的,而不仅仅是针对二叉树)。

由此可得:n0+n1+n2-1=n1+2n2

化简得:n0=n2+1

说明:这个性质在选择题中常有体现,并且需要灵活运用。例如,题目可能问二叉树中总的结点数为n,则树中空指针的个数是多少?可以将所有的空指针看作叶子结点,则树中原有的所有结点都成了双分支结点。因此可得空指针的个数为树中所有结点个数加1,即n+1个。

这个性质还可以扩展,即在一棵度为m的树中,度为1的结点数为n1,度为2的结点数为n2,度为m的结点数为nm,则叶子结点数n0=1+n2+2n3++(m-1)nm。推导过程如下:

总结点数=n0+n1+n2++nm

总分支数=1×n1+2×n2++m×nm(度为m的结点引出m条分支) ②

总分支数=总结点数-1 ③

将式①、式②代入式③并化简得

n0=1+n2+2n3++(m-1)nm

性质2二叉树的第i层上最多有2i-1(i≥1)个结点。

结点最多的情况即为满二叉树的情况,此时二叉树每层上的结点数构成了一个首项为1、公比为2的等比数列。通项为2i-1,i为层号。

性质3高度(或深度)为k的二叉树最多有2k-1(k≥1)个结点。换句话说,满二叉树中前k层的结点个数为2k-1。

其实本条性质描述的即为性质2中等比数列的前k项和的问题,由等比数列的求和公式可得结果,即(1-2k)/(1-2)=2k-1。

性质4有n个结点的完全二叉树,对各结点从上到下、从左到右依次编号(编号范围为1~n),则结点之间有如下关系。

若i为某结点a的编号,则:

如果i≠1,则a双亲结点的编号为[i/2]。

如果2i≤n,则a左孩子的编号为2i;如果2i>n,则a无左孩子。

如果2i+1≤n,则a右孩子的编号为2i+1;如果2i+1>n,则a无右孩子。

如图6-5所示,n为5,结点B编号为2,2×2=4<5,因此编号为4的结点D为结点B的左孩子;2×2+1=5≤5,因此编号为5的结点E为结点B的右孩子。对于结点C,编号为3,因3×2=6>5,因此结点C无左孩子。对于结点E,编号为5,[5/2]=2,即编号为2的结点B是其双亲结点。

注意:有些学校的考题中,编号从0开始,即A的编号为0,B的编号为1,以此类推。此时根据双亲结点编号求孩子结点编号和根据孩子结点编号求双亲结点编号的计算方法为:某结点a的编号为i,则其左孩子结点编号为2i+1,右孩子结点编号为2i+2;a的双亲结点编号为[i/2]-1。(www.daowen.com)

978-7-111-58746-0-Chapter06-5.jpg

图6-5 有5个结点的完全二叉树

性质5 函数Catalan():给定n个结点,能构成h(n)种不同的二叉树,978-7-111-58746-0-Chapter06-6.jpg

性质6 具有n(n≥1)个结点的完全二叉树的高度(或深度)为[log2n]+1。

证明:由性质3可知:

2h-1-1<n≤2h-1,其中h为完全二叉树的高度。

又可以写为:

2h-1≤n<2h

对其取对数得:

h-1≤log2n<h

由于h为整数,因此对log2n向下取整即得到一个等式:

978-7-111-58746-0-Chapter06-7.jpg

说明:

上述完全二叉树高度公式是在考研数据结构中出现最多的形式,但有些学校的考题中,尤其是选择题中给出的表达式是:

978-7-111-58746-0-Chapter06-8.jpg

当然这个表达式也是对的,只是因推导过程中的等式选择不同,故产生的不同结果形式,下述是其推导过程:

将2h-1-1<n≤2h-1,左、中、右全部加1得:

2h-1<n+1≤2h

对其取对数得:

h-1<log2(n+1)≤h

由于h为整数,因此对log2(n+1)向上取整即得到一个等式:978-7-111-58746-0-Chapter06-9.jpg

由于不同的学校对于推导过程中等式的不同选择或者对于树的高度的不同规定,会出现不同的高度表达式。因此希望同学们能掌握推导方法,而不仅是记住上述两个表达式的形式,这样在遇到其他形式的表达式时,能根据具体规定推导出正确的结果,进而分辨给出的表达式是否正确,这在某些选择题中是很有用的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈