涉及的幾個類
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 掌握層次遍歷模板 使用佇列 雙迴圈,可解決層次遍歷 求最大深...