資料結構--樹和二叉樹01
1.樹的基本概念:
樹的度:所有結點的度當中,度數最大的。
葉子結點:度為0的結點
分支結點:除了葉子節點以外,都是分支結點。
內部結點:除了葉子節點,和根節點以外所有的結點。
總結點為 N,總度數為K ,則 N = K +1
2.樹的遍歷
遍歷混亂的時候,可以假設空結點位置為 null ,也走一下
前序(先根)遍歷:1--2--6--7--3--4--8--9--10
後序(後根)遍歷:5--6--7--2--3--9--10--8--4--1
層次遍歷:1--2--3--4--5--6--7--8--9--10
3.二叉樹的一些概念和特性
二叉樹並不是一種特殊的樹,而是一種獨立的一種資料結構。
滿二叉樹:所有結點都是充實的,沒有空缺的結點。
完全二叉樹:假設該二叉樹為K層,則(K-1)層為滿,且葉子結點,全部集中在左側。
非完全二叉樹:即普通二叉樹
二叉樹的重要特性:
1.在二叉樹的第K層上,最多有2的K-1次方(K>=1)
2.深度為K的二叉樹,最多有2的K次方減1個結點(K>=1)
3.對於任何一棵二叉樹,如果其葉子結點的個數為K,度為2的結點數為M,則K=M+1
4.如果對於一棵有N個結點的完全二叉樹的結點按層次進行編號(如上圖,從第一層到第 (log 2n 向下取整),每層從左到右),對任意結點 i (1<i<n),有:
如果i=1,則結點i無父結點,是二叉樹的根,如果i>1,則父結點為 i/2 向下取整
如果2i>n,則結點i為葉子結點,無左子結點,否則,其左子結點為2i
如果2i+1>n,則結點i無右子結點,否則,其右子結點是結點2i+1
例:一個具有767個結點的完全二叉樹,其葉子結點的個數為 (384)
解題:假設度為0的結點數為n0,度為1的結點數為n1,度為2的結點數為n2 ,
則n0+n1+n2=767,
768=2*n0+n1,度為1的個數為 0 或 1 ,
所以個數為384
4.二叉樹的遍歷
前序(先根)遍歷:1--2--4--5--7--8--3--6
中序(中根)遍歷:4--2--7--8--5--1--3--6
後序(後根)遍歷:4--8--7--5--2--6--3--1
層次遍歷:1--2--3--4--5--6--7--8
5.樹和二叉樹的轉換
取最左側子結點為左子結點,兄弟結點轉為右子結點
轉換完成之後,先序遍歷不變