LeetCode 94 二叉樹的中序遍歷

2021-10-18 16:35:05 字數 1071 閱讀 2675

題目描述:

給定乙個二叉樹的根節點root,返回它的中序遍歷。

輸入:root = [1,null,2,3]輸出:[1,3,2]
思路分析:用遞迴或是迭代演算法來解決。

遞迴:

首先我們需要了解什麼是二叉樹的中序遍歷:按照訪問左子樹——根節點——右子樹的方式遍歷這棵樹,而在訪問左子樹或者右子樹的時候我們按照同樣的方式遍歷,直到遍歷完整棵樹。因此整個遍歷過程天然具有遞迴的性質,我們可以直接用遞迴函式來模擬這一過程。

定義 inorder(root) 表示當前遍歷到root 節點的答案,那麼按照定義,我們只要遞迴呼叫 inorder(root.left) 來遍歷 root 節點的左子樹,然後將 root 節點的值加入答案,再遞迴呼叫inorder(root.right) 來遍歷 root 節點的右子樹即可,遞迴終止的條件為碰到空節點。

class solution 

public void inorder(treenode root, listres)

inorder(root.left, res);

res.add(root.val);

inorder(root.right, res);}}

迭代法:遞迴函式我們也可以用迭代的方式實現,兩種方式是等價的,區別在於遞迴的時候隱式地維護了乙個棧,而我們在迭代的時候需要顯式地將這個棧模擬出來,其他都相同,具體實現可以看下面的**。

class solution 

root = stk.pop();

res.add(root.val);

root = root.right;

}return res;}}

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