二叉樹的中序遍歷

2021-10-21 06:26:28 字數 883 閱讀 6943

輸入:root = [1,null,2,3]

輸出:[1,3,2]

高階:遞迴演算法很簡單,你可以通過迭代演算法完成嗎?

2.1  思路分析中序遍歷,按照左、根、右的順序遍歷即可;

2.2  **實現

class solution 

private void infixorder(treenode root)

infixorder(root.left);

res.add(root.val);

infixorder(root.right);}}

2.3  複雜度分析3.1  思路分析該方法與遞迴的區別在於遞迴相當於隱式的維護了乙個棧結構,迭代法將這個棧結構顯示的表達出來;

3.2  **實現

class solution 

//處理當前節點

root = stack.pop();

res.add(root.val);

//處理右子樹

root = root.right;

}return res;}}

3.3  複雜度分析

二叉樹中序遍歷

訪問根結點的的左子樹,訪問根結點和訪問根結點的右子樹依次記作 l,d r 中序遍歷 ldr 演算法 遍歷根結點的左子樹,訪問根結點 遍歷根結點的右子樹 對於上面的圖,我們假定只有a,b,c三個結點,則中序遍歷結果為 b a c 採用上節 二叉樹鏈式儲存和前序遍歷 中的遞迴推演 db a c d b ...

二叉樹中序遍歷

二叉樹中序遍歷 非遞迴版本的中序遍歷用棧來實現。乙個元素出現在棧頂一次,這一次會被處理並出棧。trick 用乙個指標去記錄當前節點cur,如果cur left左側還未遍歷,就會將cur入棧並訪問cur left。一行很重要的 是cur cur right,這一句之後如果cur null,則說明棧頂元...

二叉樹先序遍歷和中序遍歷確定二叉樹

由於希望得到一顆二叉樹,所以返回值型別是乙個指向根節點的指標 表示得到了一顆二叉樹 btnode creatbt char pre,char int,int l1,int r1,int l2,int r2 引數列表有傳入的先序序列和後序序列和他們的開頭和結尾 由於是遞迴函式,先寫乙個遞迴出口,顯然是...