二叉樹的遍歷

2022-06-10 11:30:18 字數 1415 閱讀 1269

二叉樹常見的遍歷方式

前序遍歷

中序遍歷

後序遍歷

層序遍歷

前序遍歷

訪問順序:根節點、前序遍歷左子樹,前序遍歷右子樹

利用棧實現

1.設定node=root

2.迴圈執行以下操作

如果node != null

對node進行訪問,將node.right入棧

設定node = node.left

如果node == null

如果棧為空,結束遍歷

如果棧不為空,彈出棧頂元素並賦值給node

中序遍歷

訪問順序:中序遍歷左子樹、根節點、中序遍歷右子樹

利用棧實現

設定node = root

迴圈執行以下操作

如果node != null

將node入棧,設定node = node.left

如果 node == null

如果棧為空,結束遍歷

如果棧不為空,彈出棧頂元素並賦值給node

對node進行訪問

設定node = node.right

後序遍歷

訪問順序:後序遍歷左子樹、後序遍歷右子樹、根節點

實現方式

將root入棧

迴圈執行以下操作,直到棧為空

如果棧頂節點是葉子節點或者上一次訪問的節點是棧頂節點的子節點

彈出棧頂節點,進行訪問

否則將棧頂節點的right、left按順序入棧

層序遍歷

訪問順序:從上到下、從左到右依次訪問每個節點

實現思路:使用佇列

將根節點入隊

迴圈執行以下操作,知道隊列為空

將隊頭結點a出隊,進行訪問

將a的左節點入隊

將a的有節點入隊

二叉樹的遍歷 二叉樹遍歷與儲存

在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...

構建二叉樹 遍歷二叉樹

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

玩轉二叉樹(二叉樹的遍歷)

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...