二叉樹的三種迭代遍歷

2021-10-22 13:12:40 字數 858 閱讀 9140

二叉樹的三種遍歷方式分別是前序、後序、中序。其遞迴方式比較簡單,此處用棧模擬遞迴來描述二叉樹的三種遍歷方式的迭代版本

1、前序遍歷

先到最左邊節點,一路上收集左節點到棧中,並儲存到結果集。

之後不斷出棧,並對出棧結果的右節點進行如上操作

class

solution

cur = stack.

pop(

).right;

}return ans;

}}

2、中序遍歷

和前序遍歷基本一致,所不同的是在中序中要求的結果是:左中右,所以在儲存結果集的時候只能是在回來的路上儲存

class

solution

treenode node = stack.

pop();

ans.

add(node.val)

; cur = node.right;

}return ans;

}}

3、後序遍歷

後序遍歷的方式是:左 右 根,此處我們如果反過來就是:根 右 左

我們發現,這其實是一種反方向的前序遍歷,只需要將前序遍歷的左右調換位置即可得到根右左,最後將得到的結果反轉即可

class

solution

cur = stack.

pop(

).left;

} collections.

reverse

(ans)

;return ans;

}}

二叉樹的三種遍歷

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

二叉樹的三種遍歷

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

二叉樹的三種遍歷

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