二叉樹的前序,中序,後序遍歷真是看一遍就會,看過就忘的小妖精啊,在這裡總結一下竅門。
實際上前序,中序和後序遍歷的命名是體現在根節點的位置的,也就是說根節點在前的是前序,根節點在中間的是中序,根節點在後的是後序,而左子樹和右子樹的順序是不變的,先左後右,男左女右(呸呸呸)。
還有一點關鍵的是,比如前序遍歷順序並不是根節點,左孩子,右孩子;而是根節點,左子樹,右子樹,裡面是蘊含了遞迴思想的,記住了這兩點就肯定不會錯了。舉個例子吧:
對上圖這顆簡單的樹進行中序遍歷:
按照「左子樹,根節點,右子樹」,首先處理a的左子樹(注意,不是a的左孩子,如果你想成了a的左孩子,那你就會寫下第乙個元素b,這是錯誤的)。a的左子樹「bd」再次按照「左子樹,根節點,右子樹」的順序,左子樹只有乙個葉子節點d,所以d才是最終結果中的第乙個元素。「d」
回溯一層,按照「左子樹,根節點,右子樹」的順序,左子樹處理完了,該處理根節點b,這就是結果的第二個元素,「db」;
b的右子樹是空的,所以再上溯一層,按照「左子樹,根節點,右子樹」的順序,處理根節點a,這是結果的第三個元素,「dba」
就這樣依次遞推下去,結果是「dbafegc」。
感覺寫得有些囉嗦了,拜拜!
二叉樹遍歷方式
先序遍歷 根 左子樹 右子樹 遞迴版本 public static void preprint treenode root 非遞迴版本 public static void preorder treenode root if s.empty 中序遍歷 左子樹 根 右子樹 遞迴版本 public st...
二叉樹幾種遍歷方式
一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...
二叉樹遍歷方式彙總
include using namespace std struct bitreenode bitreenode init tree vector nums else return root void pre order r bitreenode root void in order r bitre...