LeetCode刷題小記 二叉樹的中序遍歷

2021-10-11 00:14:17 字數 1050 閱讀 8388

沒事就練練

方法:兩大類

**奉上

/**

* definition for a binary tree node.

* public class treenode

* treenode(int val)

* treenode(int val, treenode left, treenode right)

* }*/class

solution

public

void

inorder

(treenode root,list

res)

}

沒啥說的,看非遞迴

思想:模擬遞迴的過程,自己構造乙個棧來模擬系統棧。

class

solution

//出棧訪問(放入集合)

node = stack.

pop();

res.

add(node.val)

;//看右子樹

node = node.right;

}return res;

}}

思想:利用棧的特點,把節點按照逆序放進去,如中序遍歷,放入節點順序為(右,中,左)。

以當前子樹為單位,放入棧。

這裡借鑑了大佬的顏色標記法。本文用節點型別代替顏色標識。

在放入當前子樹根節點的時候,放的是值,不是節點。以此來代替顏色標記(樹節點代表未訪問,值代表已訪問)。

實際上,是不斷的把子樹替換掉根,最終形成乙個序列。

此**思想適用於先序遍歷與後序遍歷,強烈推薦!!!

**:

class

solution

else

}return res;

}}

不得不驚嘆,大佬的顏色標記法確實牛!

leetcode刷題python之二叉樹的層次遍歷

題目 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 definition for a binary tree node.class treen...

leetcode刷題筆記 二叉樹5

給定乙個不含重複元素的整數陣列。乙個以此陣列構建的最大二叉樹定義如下 二叉樹的根是陣列中的最大元素。左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。輸入 3,2,1,6,0,5 輸出 返回下...

leetcode刷題筆記 二叉樹6

根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意 你可以假設樹中沒有重複的元素。例如,給出 前序遍歷 preorder 3 9,20 15,7 中序遍歷 inorder 9 3,15 20,7 返回如下的二叉樹 3 9 20 157這是我們資料結構學習二叉樹必考的題型之一,但我們這次需要程式設計做出,...