二叉樹的10個重要結論

2021-06-21 06:21:33 字數 986 閱讀 8966

1、遍歷二叉樹:l、d、r分別表示遍歷左子樹、訪問根結點和遍歷右子樹,     

則先(根)序遍歷二叉樹的順序是dlr,      

中(根)序遍歷二叉樹的順序是ldr,     

後(根)序遍歷二叉樹的順序是lrd,     

還有按層遍歷二叉樹。這些方法的時間複雜度都是o(n),n為結點個數。 

2、如果t2是由有序樹t轉換而來的二叉樹,那麼t中結點的前序就是t2中結點的前序,t中結點的後序就是t2中結點的中序。

3、任何一棵二叉樹的葉結點在先序、中序和後序遍歷中的相對次序不發改變。 

4、設n,m為一棵二叉樹上的兩個結點,在中序遍歷時,n在m前的條件是n在m的左方。 

5、前序序列和中序序列相同的二叉樹為空樹或任一結點均無左孩子的非空二叉樹;    

中序序列和後序序列相同的二叉樹為空樹或任一結點均無右孩子的非空二叉樹;     

前序序列和後序序列相同的二叉樹為空樹或僅有乙個結點的二叉樹。 

6、中序遍歷,每個結點在訪問左子樹和右子樹之間訪問。這在遍歷二叉搜尋樹時很常用,因為它能用遞增的順序來遍歷所有的值。 

7、以上的遞迴演算法使用與樹的高度成比例的棧空間。     如果我們在每個結點中儲存指向父結點的指標,那樣可以使用迭代演算法,只使用常數級空間實現所有這些遍歷。然而,指向父結點的指標占用更多的空間。這只在需要指向父節點的指標或棧空間有限時才使用。

8、用二叉樹表示下述表示式:a+b*(c-d)-e/f      先序遍歷的序列是:-+a*b-cd/ef

中序遍歷的序列是:a+b*c-d-e/f

後序遍歷的序列是:abcd-*+ef/-

9、深度優先遍歷在深度優先順序中,我們希望從根結點訪問最遠的結點。和圖的深度優先搜尋不同的是,不需記住訪問過的每乙個結點,因為樹中不會有環。前序,中序和後序遍歷都是深度優先遍歷的特例。 

10、廣度優先遍歷和深度優先遍歷不同,廣度優先遍歷會先訪問離根節點最近的節點。 二叉樹的廣度優先遍歷又稱按層次遍歷。演算法借助佇列實現。

二叉樹的重要函式(二)

1.二叉樹的節點個數 注意 返回乙個區域性變數供給外部函式使用,要是用static 將其定義為全域性變數放在堆區,迴圈一次加一,在遍歷左子樹,後右子樹,最後返回count。2.樹的深度 以左右樹最大的深度為二叉樹的深度 左子樹的高度 包括根節點 是 high t leftchild 1,右子樹的高度...

演算法10 二叉樹

1.給定二叉樹的前序和中序遍歷陣列,重新構建二叉樹 int pre new int int in new int 假設前序陣列pre 起始座標ps,pe 中序陣列in is,ie 前序陣列的第乙個元素即為根節點rootvalue 1 尋找根節點在中序陣列中的位置索引rootinindex 3 從中序...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...