二叉樹遍歷的遞迴實現

2021-07-27 23:41:08 字數 1261 閱讀 7679

二叉樹有三種遍歷方式,分別是中根序,先根序和後根序。

中根序的執行順序:左孩子——>根節點——>右孩子

先根序的執行順序:根節點——>左孩子——>右孩子

後根序的執行順序:左孩子——>右孩子——>根節點

現在有一顆二叉樹:

中根序:84925a1637

先根序:124895a267

後根序:894a526731

最近看牛客好多題是給你中根序和先根序讓求後根序或者畫出樹狀圖來,這種題還是比較簡單地,搞清楚每種排序的執行順序,搞定這類題不成問題。

三種遍歷方式的**:

樹的資料結構:

class btree

1.中根序遍歷: /*

該函式用於按照中根序輸出符合條件的樹:先輸出左孩子,再輸出根節點,最後輸出右孩子,

主要採用遞迴的方法輸出:

遞迴的條件約束是:這個節點指向的不為null

傳遞過來的是根節點,把根節點的左孩子作為根節點遞迴呼叫這個函式,把這個孩子再次作為根節點去找他的左孩子,

如果這個跟節點為null,即沒有左孩子,輸出跟節點,然後把這個節點的右孩子作為根節點去遞迴,去找這個節點的

左孩子,依次遞迴...

*/public void recursionmiddleroot(btreeroot)}

2.先根序遍歷

/*該函式用於先根序法,傳過來的是根節點。先輸出根節點,再左節點,後右節點。採用遞迴的方式

遞迴的條件:根節點不為null。

先輸出這個根節點,在用把這個根節點的左孩子作為實參傳遞再次呼叫這個函式:輸出這個節點,

再用把這個根節點的左孩子作為實參傳遞再次呼叫這個函式,如果這個節點的左孩子為null,則

返回上一次遞迴,輸出上一次遞迴的右孩子。

*/public void recursionfirstroot(btreeroot)

}3.後根序遍歷

/*該函式用於後根序法,傳過來的是根節點。先輸出左節點,再右節點,最後輸出根節點。採用遞迴的方式

遞迴的條件:根節點不為null。

先輸出左節點,左節點再去找他的左孩子...知道當前節點沒有左孩子,那麼這個節點作為左後乙個節點輸出,

然後返回上一層,去找這個節點的父節點下的右孩子嗎,右孩子有作為根節點去找他的左孩子...直到左孩子全部輸出完了,在輸出右孩子,然後輸出根節點

*/public void recursionlastroot(btreeroot)}

二叉樹遍歷遞迴實現

include include define flag int define l 0 define r 1 typedef struct tree tree tree init tree int data void destroy tree tree root void insert tree t,...

遍歷二叉樹 遞迴實現

二叉樹作為樹的一種,是一種重要的資料結構,也是面試官經常考的東西。二叉樹中的面試題比較常見的題型大概有下面幾個 建立一顆二叉樹 先序,中序,後序 遍歷一顆二叉樹 先序,中序,後序和層次遍歷 求二叉樹中葉子節點的個數 求二叉樹的高度等等。binarytree.h pragma once templat...

二叉樹遍歷遞迴實現

二叉樹遍歷遞迴實現 由三種遍歷順序可看出 先序遍歷遞迴實現 c void preorder node r 中序遍歷遞迴實現 c void inorder node r 後序遍歷遞迴實現 c void posorder node r 完整可執行c include include using names...