二叉樹 節點分析

2022-09-05 12:15:08 字數 1029 閱讀 4891

通過問題了解:

問題一:

某二叉樹中度為2的結點有18個,則該二叉樹中有

性質1:

二叉樹的終端結點(葉子結點)數等於雙分支結點數加1. 假設二叉樹中終端結點數為n0,單分支結點數為n1,雙分支結點數為n2,二叉樹中總結點數為n,因為二叉樹中所有結點度數均小於或等於2,所以有:n=n0+n1+n2;另一方面,二叉樹中所有結點的分支數(即度數)應等於單分支結點數加上兩倍的雙分支結點數,即n1+2×n2.由樹的性質1,有:n=n1+2×n2+1.根據以上兩個式子,我們可以得出下面這個等式成立:n0+n1+n2= n1+2×n2+1,所以n0=n2+1.

設度為0,1和2的節點分別為x,y,z,則二叉樹總結點數為s=2z+y+1或s=x+y+z,得z+1=x,即度為2的節點數比葉子節點樹少1.

性質2:

2的結點數比葉子結點數少1,18+1=19

問題二:

一顆二叉樹共有47個節點,其中有23個度為2的節點。假設根節點在第一層。求改二叉樹的深度

【答案】  

【解析1】  

根據二叉樹的性質,度為0的結點個數比度為2的結點多乙個。所以本題中度為0的結點的個數為24。在二叉樹的第k層上,最多有2k-1(k>=1)個結點。所以第一層上最多1個結點,第二層上最多2個結點,第三層上最多4個結點,第四層上最多8個結點,第5層上最多16個結點。前5層的總共結點個數等於31,而本題度為2的結點個數為23,因此第5層上只能有8個度為2的結點,即在第6層上還有16個度為0的結點。

【解析2】

n0=n2+1.所以n0=24,n2=23,一共47.即不存在度為1的結點,為完全二叉樹。深度為k的完全二叉樹結點最多有2的k次方-1個結點,故為(2^k)-1<=47,故得到【解析1】的計算方式;計算反向每層節點數應該是48》24》12》6》3》1完成。故結果為6

列印二叉樹節點

從上往下列印出二叉樹的每個節點,同層節點從左至右列印。條件反射地想通過遞迴解決,結果硬是沒有找到合適的解決思路,也許遞迴的方式不是很適合這種型別的題目吧 利用佇列的先進先出 fifo 特性解決。每從佇列頭部獲取乙個節點,就將該節點的左右子節點存入佇列的尾部。如此往復,直至隊列為空。這篇部落格內的和 ...

二叉樹節點的刪除

昨天在看書的時候,突然看到二叉查詢樹的刪除,以前學過,不過學的不仔細,結果研究了一晚上,才把二叉樹的刪除操作給整出來。唉,以後看書要仔細啊。先說一下如何刪除二叉樹查詢樹的節點吧。總共有三種情況 1.被刪除的節點是葉子節點,這時候只要把這個節點刪除,再把指向這個節點的父節點指標置為空就行 2.被刪除的...

二叉樹節點的查詢

區 package 二叉樹節點的查詢 public class binarytree public treenode getroot 前序 public void frontshow 中序 public void midshow 後序 public void aftershow 前序查詢 publi...