秋招記錄
對一棵二叉樹進行遍歷,我們可以採取3種順序進行遍歷,分別是前序遍歷、中序遍歷和後序遍歷。
這三種方式是以訪問父節點的順序來進行命名的。
假設父節點是n,左節點是l,右節點是r,那麼對應的訪問遍歷順序如下:
前序遍歷:中左右 n>l>r
中序遍歷:左中右 l>n>r
後序遍歷:左右中 l>r>n
總結:1.先左後右是一定的,父節點的位置決定了前中後
2.利用前序遍歷可以得到根節點,就是第乙個
3.利用後序遍歷可以得到根節點,最後乙個
4.確認了根節點,利用中序遍歷可以得到左子樹和右子樹
5.對左子樹和右子樹分別做前面3點的分析和拆分,相當於做遞迴,我們就可以重建出完整的二叉樹
例題:前序遍歷的順序是: cabghedf 中序遍歷的順序是: ghbacdef
第一步:根節點是c 左包括 ghba 右包括 def
第二步:把左子樹當做乙個完整的二叉樹再看,a是左子樹的根節點,而ghb都在a的左邊,同理右子樹的根節點是e,左右分別是d和f
第三步:根據前兩步的經驗,對於每個小子樹都採用同樣的方式,最後得到完整的二叉樹:
關鍵:**記住前中後序所對應的節點遍歷順序!
前中後是指n的位置,左右不變!**
二叉樹的前 中 後序遍歷
import lombok.data import lombok.noargsconstructor data noargsconstructor class treenode 前序遍歷 根 左 右 public void preorder 遞迴向右子樹前序遍歷if this right null ...
二叉樹的前 中 後序遍歷
前序 根左右 中序 左根右 後序 左右根 前序遍歷 124563 中序遍歷 546213 後序遍歷 564231 package datastructure public class binarytreedemo class binarytree public binarytree hero roo...
二叉樹的前中後序遍歷
關於二叉樹的遍歷,常見的有三種遍歷方式,即,前序遍歷,中序遍歷,後序遍歷,這個 序 字,即指當前的節點對於其左右子節點的先後處理關係。結合我們剛剛講的,就知道對於其左右子樹而言,優先遍歷當前的父節點,然後遍歷它的左子樹,最後遍歷它的右子樹。對於其左右子樹而言,當前父節點在中間遍歷,即先遍歷當前節點的...