二叉树相关性质以及数学证明
性質一:
在二叉樹中,設度為0的結點數為n0,度為2的結點數為n2,有n0=n2+1在二叉樹中,設度為0的結點數為n_0,度為2的結點數為n_2,有n_0=n_2+1在二叉樹中,設度為0的結點數為n0?,度為2的結點數為n2?,有n0?=n2?+1
證明:證明:證明:
一個有N個結點的二叉樹中,除了根結點之外,每一個結點都有一個指向它的分支,設分支的總數為M有M=N?1=n0+n1+n2?1又因為M=n1+2n2所以n0=n2+1一個有N個結點的二叉樹中,除了根結點之外,每一個結點都有一個指向它的分支,設分支的總數為M \\ 有M=N-1=n_0+n_1+n_2-1\\ 又因為M=n_1 + 2n_2\\ 所以n_0 = n_2 + 1一個有N個結點的二叉樹中,除了根結點之外,每一個結點都有一個指向它的分支,設分支的總數為M有M=N?1=n0?+n1?+n2??1又因為M=n1?+2n2?所以n0?=n2?+1
性質二:
一棵二叉樹第h層最多有2h?1個結點,高度為h的二叉樹最多有2h?1個結點一棵二叉樹第h層最多有2^{h-1}個結點,高度為h的二叉樹最多有2^h-1個結點一棵二叉樹第h層最多有2h?1個結點,高度為h的二叉樹最多有2h?1個結點
證明:證明:證明:
第一層有1個結點(根節點),第二層最多有2個,第三層最多有4個…第h層最多有2h?1個結點,等比數列求和,高度為h的二叉樹最多有2h?1個結點第一層有1個結點(根節點),第二層最多有2個,第三層最多有4個 \dots \\ 第h層最多有2^{h-1}個結點,等比數列求和,高度為h的二叉樹最多有2^h-1個結點第一層有1個結點(根節點),第二層最多有2個,第三層最多有4個…第h層最多有2h?1個結點,等比數列求和,高度為h的二叉樹最多有2h?1個結點
性質三:
在一棵有n個結點的二叉樹中,樹的高度為h,h=?log?2(n+1)?或h=?log2n?+1在一棵有n個結點的二叉樹中,樹的高度為h,h = \lceil \log_2(n+1) \rceil 或 h=\lfloor log_2n\rfloor +1在一棵有n個結點的二叉樹中,樹的高度為h,h=?log2?(n+1)?或h=?log2?n?+1
證明:證明:證明:
因為樹高為h,有2h?1?1<n≤2h?1所以h?1<log2(n+1)≤h所以h=?log?2(n+1)?因為樹高為h,有2^{h-1} -1 \lt n \le 2^{h}-1\\ 所以 h-1 \lt log_2(n+1)\le h \\ 所以h=\lceil \log_2(n+1) \rceil因為樹高為h,有2h?1?1<n≤2h?1所以h?1<log2?(n+1)≤h所以h=?log2?(n+1)?
同理2h?1≤n<2h所以h?1≤log2(n)<h所以h=?log2n?+1同理2^{h-1} \le n \lt 2^{h} \\ 所以 h-1 \le log_2(n)\lt h \\ 所以h=\lfloor log_2n\rfloor +1同理2h?1≤n<2h所以h?1≤log2?(n)<h所以h=?log2?n?+1
性質四:
在一棵完全二叉樹中,最后一個非終端結點的編號為?n/2?在一棵完全二叉樹中,最后一個非終端結點的編號為\lfloor n/2 \rfloor在一棵完全二叉樹中,最后一個非終端結點的編號為?n/2?
證明:證明:證明:
首先要明確一個完全二叉樹的最后一個非終端結點一定位于該樹的倒數第二層設這最后一個終端結點是該層第k個元素,編號為x,樹的高度為h首先要明確一個完全二叉樹的最后一個非終端結點一定位于該樹的倒數第二層\\ 設這最后一個終端結點是該層第k個元素,編號為x,樹的高度為h首先要明確一個完全二叉樹的最后一個非終端結點一定位于該樹的倒數第二層設這最后一個終端結點是該層第k個元素,編號為x,樹的高度為h
有x=k+2h?2?1有x= k+2^{h-2}-1有x=k+2h?2?1
最后一層的元素個數n?2h?1+1倒數第二層最后一個非終端之前的結點都有倆個子結點最后一個非終端結點可能有一個子結點,可能有倆個子結點所以?[n?2h?1+1]/2?=k最后一層的元素個數 n-2^{h-1}+1\\ 倒數第二層最后一個非終端之前的結點都有倆個子結點\\ 最后一個非終端結點可能有一個子結點,可能有倆個子結點\\ 所以\lceil [n-2^{h-1}+1]/ 2\rceil = k最后一層的元素個數n?2h?1+1倒數第二層最后一個非終端之前的結點都有倆個子結點最后一個非終端結點可能有一個子結點,可能有倆個子結點所以?[n?2h?1+1]/2?=k
x?2h?2+1=?[n?2h?1+1]/2?x-2^{h-2}+1=\lceil [n-2^{h-1}+1]/ 2\rceilx?2h?2+1=?[n?2h?1+1]/2?
x=?n/2?x=\lfloor n/2 \rfloorx=?n/2?
同時也解釋了為什么在二叉樹的順序存儲中(下標從1開始),結點i的子結點下標為2?i,2?i+1同時也解釋了為什么在二叉樹的順序存儲中(下標從1開始),結點i的子結點下標為2*i,2*i+1同時也解釋了為什么在二叉樹的順序存儲中(下標從1開始),結點i的子結點下標為2?i,2?i+1
性質五:
有n個結點的哈夫曼樹(最優二叉樹)有(n+1)/2個葉節點,如果用二叉鏈表進行存儲則會有n+1個空指針有n個結點的哈夫曼樹(最優二叉樹)\\ 有 (n+1)/2個葉節點,如果用二叉鏈表進行存儲則會有n+1個空指針有n個結點的哈夫曼樹(最優二叉樹)有(n+1)/2個葉節點,如果用二叉鏈表進行存儲則會有n+1個空指針
證明:證明:證明:
已知哈夫曼樹不含有度為1的結點設度為0的結點數為n0,度為2的結點數為n2,有n0=n2+1已知哈夫曼樹不含有度為1的結點\\ 設度為0的結點數為n 0,度為2的結點數為n_2,有n_0=n_2+1已知哈夫曼樹不含有度為1的結點設度為0的結點數為n0,度為2的結點數為n2?,有n0?=n2?+1
n0+n2=Nn_0 +n_2=Nn0?+n2?=N
所以n0=(n+1)/2所以n_0=(n+1)/2所以n0?=(n+1)/2
二叉鏈表中的空指針個數2?n0=n+1二叉鏈表中的空指針個數2*n_0 = n+1二叉鏈表中的空指針個數2?n0?=n+1
性質6:
在完全m叉樹中,編號為i的結點的第一個子結點編號為(i?1)?m+2在完全m叉樹中,編號為i的結點的第一個子結點編號為(i-1)*m + 2在完全m叉樹中,編號為i的結點的第一個子結點編號為(i?1)?m+2
證明:證明:證明:
假設編號為i的結點所在的層數為h?1,其第一個子結點所在層數為h那么在第h層,該子結點前面的結點個數為:(i?1?[mh?2?1m?1+1]+1)?m,表示為h?1層中i結點以前的結點乘以每個結點所含有的m個結點假設編號為i的結點所在的層數為h-1,其第一個子結點所在層數為h\\ 那么在第h層,該子結點前面的結點個數為:\\ (i-1-[\frac{m^{h-2}-1}{m-1}+1]+1)*m,表示為h-1層中i結點以前的結點乘以每個結點所含有的m個結點假設編號為i的結點所在的層數為h?1,其第一個子結點所在層數為h那么在第h層,該子結點前面的結點個數為:(i?1?[m?1mh?2?1?+1]+1)?m,表示為h?1層中i結點以前的結點乘以每個結點所含有的m個結點
再加上h?1層以上所有的結點個數mh?1m?1(i?1?[mh?2?1m?1+1]+1)?m+mh?1m?1+1編號為(i?1)?m+2再加上h-1層以上所有的結點個數\frac{m^{h-1}}{m-1}\\ (i-1-[\frac{m^{h-2}-1}{m-1}+1]+1)*m + \frac{m^{h-1}}{m-1} +1\\ 編號為(i-1)*m +2再加上h?1層以上所有的結點個數m?1mh?1?(i?1?[m?1mh?2?1?+1]+1)?m+m?1mh?1?+1編號為(i?1)?m+2
本文會隨著我對二叉樹性質的認知而不斷更新,如果你有想通過數學證明的二叉樹性質,可以評論告訴我
總結
以上是生活随笔為你收集整理的二叉树相关性质以及数学证明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring中Controller层、F
- 下一篇: C/C++/Java 的基本数据类型