LeetCode 二叉樹的遍歷

2021-08-22 09:54:22 字數 1158 閱讀 3779

涉及的幾個類

stack (棧)是vector 的乙個子類

queue(佇列)

stack

st=

newstack

<>();

//基本操作

st.pop() //彈棧,返回彈出的元素

st.push() //壓棧

st.peek() //返回棧頂元素

//用棧維護

//佇列

queuequ=new linkedlist<>();

qu.add()(不可以增加null)或者qu.offer()(可以增加null) //增加乙個元素

qu.remove()(失敗throws nosuchelementexception)或者qu.poll()(失敗返回null)//返回

qu.element()(失敗throws)或者 qu.peek() (失敗返回null);

二叉樹的遍歷問題:

非遞迴的四種遍歷方式:

1.前序遍歷

先入棧 root

然後執行 彈出棧頂並且輸出然後壓棧 右節點和左節點。(先右後左)

class solution 

return result;

}}

2.後序遍歷:

就是先序遍歷中壓棧(先左後右) 之後將得到的值反轉。

class solution 

collections.reverse(result);

return result;

}}

3.中序遍歷

中序遍歷有些麻煩,維護乙個棧 和乙個指標p 。

每次將p不斷向左邊遞進直至p==null 之後彈棧 另p=st.pop().right;

class solution 

if (!st.empty())

}return result;

}}

4.層序遍歷

只需要維護乙個佇列即可 相對簡單 queue

leetcode 二叉樹 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 方法一 遞迴 思路 比較訪問節點所在層次level和當前最高層次len levels 判定是否需...

LeetCode 二叉樹的遍歷

中序遍歷 後序遍歷 102.二叉樹的層序遍歷 輸入 1 2 3 4 5 6 輸出 1,2,3,4,5,6class solution 記錄上一層的答案 res.push back ans return res 144.二叉樹的前序遍歷 輸入 1 2 3 4 5 6 輸出 1,2,4,5,3,6cla...

Leetcode 層次遍歷二叉樹

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其自底向上的層次遍歷為 15,7 9,20 3 掌握層次遍歷模板 使用佇列 雙迴圈,可解決層次遍歷 求最大深...