1. 程式人生 > >資料結構--樹和二叉樹01

資料結構--樹和二叉樹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.樹和二叉樹的轉換

取最左側子結點為左子結點,兄弟結點轉為右子結點

轉換完成之後,先序遍歷不變