在電腦科學裡,樹的遍歷是指通過一種方法按照一定的順序訪問一顆樹的過程。
對於二叉樹,樹的遍歷通常有四種:先序遍歷、中序遍歷、後序遍歷、廣度優先遍歷。(前三種亦統稱深度優先遍歷)對於多叉樹,樹的遍歷通常有兩種:深度優先遍歷、廣度優先遍歷。
在學習前面三種深度優先遍歷之前,很有必要了解它們之間到底是怎麼遍歷的,要自己去親自去遍歷,不要只看文字
先序遍歷: 節點 - 左孩子 - 右孩子
中序遍歷: 左孩子 - 根結點 - 右孩子
後序遍歷 : 左孩子 - 右孩子 - 根結點
先序遍歷:3 1 2 5 4 6
中序遍歷:1 2 3 4 5 6
後序遍歷:2 1 4 6 5 3
首先我們來定義二叉樹的結點
public class bstree>
}......
}
bstnode包含二叉查詢樹的幾個基本資訊:
(01) key -- 它是關鍵字,是用來對二叉查詢樹的節點進行排序的。
(02) left -- 它指向當前節點的左孩子。
(03) right -- 它指向當前節點的右孩子。
(04) parent -- 它指向當前節點的父結點。
若二叉樹非空,則執行以下操作:
(01) 訪問根結點;
(02) 先序遍歷左子樹;
(03) 先序遍歷右子樹。
**如下:
private void preorder(bstnodetree)
}public void preorder()
若二叉樹非空,則執行以下操作:
(01) 中序遍歷左子樹;
(02) 訪問根結點;
(03) 中序遍歷右子樹。
**如下:
private void inorder(bstnodetree)
}public void inorder()
若二叉樹非空,則執行以下操作:
(01) 後序遍歷左子樹;
(02) 後序遍歷右子樹;
(03) 訪問根結點。
**如下:
private void postorder(bstnodetree)
}public void postorder()
(01) 前序遍歷結果: 3 1 2 5 4 6
(02) 中序遍歷結果: 1 2 3 4 5 6
(03) 後序遍歷結果: 2 1 4 6 5 3
資料結構 二叉樹的遍歷(前 中 後序遍歷)
改編自 挑戰程式設計競賽2 目標 用三種遍歷方式列印出樹 由於我想偷懶易於理解我就不注釋了 輸入樣例 90 1 4 1 2 3 2 1 1 3 1 1 4 5 8 5 6 7 6 1 1 7 1 1 8 1 1 輸出樣例 前序遍歷的結果是 0 1 2 3 4 5 6 7 8 中序遍歷的結果是 2 1...
資料結構 二叉樹的前 中 後序遍歷
遞迴實現前序遍歷 public static void preorderrecur node head system.out.println head preorderrecur head.left preorderrecur head.right 非遞迴實現前序遍歷 public static v...
二叉樹的前中後序遍歷
秋招記錄 對一棵二叉樹進行遍歷,我們可以採取3種順序進行遍歷,分別是前序遍歷 中序遍歷和後序遍歷。這三種方式是以訪問父節點的順序來進行命名的。假設父節點是n,左節點是l,右節點是r,那麼對應的訪問遍歷順序如下 前序遍歷 中左右 n l r 中序遍歷 左中右 l n r 後序遍歷 左右中 l r n ...