二叉樹的三種遍歷

2021-10-07 05:38:13 字數 1245 閱讀 5433

前序遍歷/前序遍歷oj

1.遞迴寫法

class solution 

return ret;}};

//插入根節點,只需遞迴訪問左右子樹即可

非遞迴寫法,迭代完成

中序遍歷oj

遞迴寫法

class solution 

return ret;}};

非遞迴寫法

class solution 

treenode *top = st.top();

ret.push_back(top->val);

st.pop();

cur = top->right;

}return ret;}};

和前序遍歷類似,不同點在於,前序遍歷順序為根,左,右;中序為左,根,右,所以插入資料的時候必須先插入最後乙個左子樹的節點,也就是出棧第乙個元素。

後序遍歷oj

遞迴寫法

class solution 

return ret;}};

非遞迴(迭代)

基本思路和先序,中序一樣,只是需要加乙個判斷,後序遍歷的順序為左,右,根。即訪問完左子樹之後,需要判斷右子樹是否為空,如果不為空,需要訪問完之後返回根節點訪問,難點在於處理這個根節點,因為如果只是簡單的判斷右子樹是否為空,則會陷入死迴圈,所以使用雙指標,如右子樹不為空,記錄節點,加上判斷即可。

class solution 

treenode* top = st.top();

if(top->right == null || top->right == last)

else

cur = top->right;

}return ret;}};

二叉樹的三種遍歷

重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...

二叉樹的三種遍歷

在這裡說一下二叉樹的三種遍歷 前序,中序,後序 正文 前序遍歷 是指先從根開始,再依次找尋左子結點 右子結點。學習時的經驗就是 看圖學習 第乙份圖 這樣看來 1.先找最基本的根結點 詞窮 這裡是a。2.接著找以a為根結點的左子結點,這裡是b。3.而以b為根結點也會出現左右結點,這就又有了乙個左結點d...

二叉樹的三種遍歷

二叉樹是n n 0 個節點的有限集合,它或者是空樹 n 0 或者是有乙個根節點及兩顆不相交的且分別稱為左 右子樹的二叉樹所組成。可見,二叉樹同樣具有遞迴性質。特別需要注意的是,儘管樹和二叉樹的概念之間有許多聯絡,但它們是兩個不同的概念,樹和二叉樹之間最主要的區別是 二叉樹結點的子樹要區分左子樹和右子...