根據某種策略,按照一定的次序訪問二叉樹中的每乙個結點,使每個結點被訪問一次且只被訪問一次。這個過程稱為二叉樹的遍歷。
遍歷的結果是二叉樹結點的線性序列。非線性結構線性化。
策略:左孩子結點一定要在右孩子結點之前訪問
若二叉樹為空,則返回;否則,
所得到的線性序列分別稱為先序(根)序列。
先序遍歷序列為:a b d g c e f
若二叉樹為空,則返回;否則,
所得到的線性序列分別稱為中序(根)序列。
中序遍歷序列為: d g b a e c f
若二叉樹為空,則返回;否則,
所得到的線性序列分別稱為後序(根)序列。
後序遍歷序列為: g d b e f c a
從二叉樹的第一層(即根結點)開始,從上至下逐層遍歷,在同一層中,則按從左到右的順序對結點進行訪問。 所得到的線性序列分別稱為層序序列。
層序遍歷序列為: a b c d e f g
//編寫前序遍歷的方法
public
void
preorder()
//遞迴向右子樹前序遍歷if(
this
.right != null)
}//中序遍歷
public
void
infixorder()
//輸出父結點
system.out.
println
(this);
//遞迴向右子樹中序遍歷if(
this
.right != null)
}//後序遍歷
public
void
postorder()
if(this
.right != null)
system.out.
println
(this);
}
二叉樹遍歷(前序,中序,後序
二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...
二叉樹的前序 中序和後序遍歷
今天做到阿里巴巴的一道筆試題,關於二叉樹的遍歷序列的,原題摘錄如下 某二叉樹的先序遍歷是12453,中序遍歷是42513,那麼其後續遍歷是?a 45231 b 42351 c 12345 d 54321 本題答案為a 本題考查的知識點是二叉樹前序 中序 後序遍歷的相互求法,即如果知道兩個的遍歷,如何...
二叉樹的遍歷 前序 中序 後序
include includetypedef struct bintree treenode,b tree b tree root null 函式的宣告 b tree creat tree int n void print1 void preorder b tree pointer 前序遍歷 voi...