沒事就練練
方法:兩大類
**奉上
/**
* 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這是我們資料結構學習二叉樹必考的題型之一,但我們這次需要程式設計做出,...