二叉樹遍歷

2021-06-17 00:13:48 字數 1085 閱讀 9969

typedef struct _binary_tree

binary_tree;

二叉樹的基本資料結構如上所示,下面給出以深度優先的三種方法對二叉樹進行遍歷的演算法(遞迴實現)。

void preorder(binary_tree *root)  //先序遍歷遞迴演算法   

} void inorder(binary_tree *root) //中序遍歷遞迴演算法

} void postorder(binary_tree *root) //後序遍歷遞迴演算法

}

下面給出三種遍歷的堆疊實現(**於網上)。

void preorder(binary_tree *b)  //先序遍歷遞迴演算法 

if(p->left != null)

}} return;

}void inorder(binary_tree *b) //中序遍歷遞迴演算法

if(top > 0)

}while(p != null || top != 0);

return;

}void poetorder(binary_tree *b) //後序遍歷遞迴演算法

q = null;

sign = 1;

while(top != -1 && sign)

else

}}while(top != -1);

return;

}

另外關於二叉樹的遍歷還有一種方法——以廣度優先的層次遍歷,也就是按照從上自下,從左自右的順序進行遍歷,程式設計實現的話與上面三種方法有存在本質上的不同,前者採用「棧」作為輔助資料結構,後者採用佇列。實際用得最多的還是前面三種方法。

總結:關於以上介紹的三種遍歷順序可以採用下圖來說明

前序遍歷:abdecfg

中序遍歷:dbeafcg

後序遍歷:debfgca

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...