LeetCode(94) 二叉樹的中序遍歷

2021-09-23 20:54:09 字數 874 閱讀 6982

提交**:

class solution 

return arr;}};

這題是用的c++。因為它要用乙個陣列來儲存遍歷的數。用c太麻煩了。

提交**:

class solution

if(s.empty()!=true)

}return arr;}};

參考:

演算法思想:

根據中序遍歷的順序,對於任一結點,優先訪問其左孩子,而左孩子結點又可以看做一根結點,然後繼續訪問其左孩子結點,直到遇到左孩子結點為空的結點才進行訪問,然後按相同的規則訪問其右子樹。因此其處理過程如下:

對於任一結點p,

1)若其左孩子不為空,則將p入棧並將p的左孩子置為當前的p,然後對當前結點p再進行相同的處理;

2)若其左孩子為空,則取棧頂元素並進行出棧操作,訪問該棧頂結點,然後將當前的p置為棧頂結點的右孩子;

3)直到p為null並且棧為空則遍歷結束。

簡單地說:

迭代一直將當前結點及其左結點入棧

出棧乙個結點,將其val記錄,並轉向右結點

注意:

if(!s.empty())

}

在此處無需判斷p是否為空。如果為空也無所謂。比如:1/

2 3過程:

1入棧,2入棧。【1,2】

2的左子樹為空,出棧2,轉向2的右子樹,也為空,棧內無入棧操作。現在的棧是。1出棧,壓1的右子樹入棧。現在的棧是。

為空也沒有關係,如果是空的話,就不用壓棧。

LeetCode 94 中序遍歷二叉樹

傳送門 給定乙個二叉樹,返回其中序遍歷。例如 給定二叉樹 1,null,2,3 1 2 3返回 1,3,2 說明 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?題中說明了要求使用迭代法 使用乙個棧來儲存二叉樹節點,根據中序遍歷的規則,我們可以推算出這樣的規律 1.將當前非空節點入棧 2.如果左子節點...

LeetCode94 二叉樹中序遍歷

題目描述 給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 c 實現 遞迴實現 definition for a binary tree node.struct treenode class solution void helper treenode ...

LeetCode 94 二叉樹的中序遍歷

給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?遞迴解法,先從根節點的左孩子中序遍歷,再訪問根節點,最後從根節點的右孩子中序遍歷。遞迴基是當節點為空時,返回。definition for a bin...