LeetCode94 迭代 每日一題day15

2021-10-09 12:00:13 字數 937 閱讀 7593

二叉樹的中序遍歷,遞迴很好寫,但是用迭代要怎麼寫呢?

迭代就是知道了初始條件之後一步步往下推,獲得新的條件,繼續推。

這道題需要用棧儲存資訊

我想到的需要標記它是否訪問過,但是我不會改leetcode裡面結構體的definition,自己電腦上也還沒配leetcode環境【對我一直在它的網頁裡寫題tvt】就先把**放在這,回頭來再試試

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

ans.

push_back

(t->val)

; s.

pop();

if(t-

>right)

}return ans;}}

;

題解給的**是這樣的

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

t = s.

top();

ans.

push_back

(t->val)

; s.

pop();

t = t-

>right;

}return ans;}}

;

精髓就是最後一句t = t->right;這樣它如果沒有右子樹,while(t)就會直接跳過,太妙了,為什麼我自己想不到呢?

看題解上還有一種o(1)的演算法,今天真的累了tvt改天吧

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...