死磕二叉樹(二)

2022-03-11 15:13:11 字數 1294 閱讀 8691

102. 二叉樹的層序遍歷

二叉樹層序遍歷可以借助bfs的思想解決:

class solution 

}

拿到這個題目之後,首先看到返回的型別是乙個list>,因此在構造返回結果的時候,結果也是按層進行新增的,也就是說,在處理的過程中需要儲存當前訪問的

// 構造返回結果

list> res = new linkedlist>();

// 動態新增值

listlist = new linkedlist<>();

res.add(list);

其次,為了達到層次遍歷的效果,可以把二叉樹的依次按層節點壓入到佇列中,再依次彈出使用:

queuequeue = new linkedlist();

treenode node = queue.poll();

if(node.left != null) queue.add(node.left);

if(node.right != null) queue.add(node.right);

可以說,佇列一次性儲存了二叉樹某個層的全部節點,一層一層的直到最底層:

public class solution 

res.add(list);

}return res;

}}

107. 二叉樹的層次遍歷 ii

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)

稍微調整一下**:

res.add(0, list);
劍指 offer 32 - iii. 從上到下列印二叉樹 iii

請實現乙個函式按照之字形順序列印二叉樹

通過奇偶層的分離,就可以實現之字形列印的。在層序遍歷中,res按儲存了遍歷的結果,因此可以借助res.size來區分奇偶層,也可以在迴圈外單獨設定乙個變數來指示當前的層數:

public class solution 

res.add(list);

level ++;

}return res;

}}

死磕二叉樹(一)

二叉樹是每個結點最多有兩個子樹的樹結構。3 4 5 1 2 因為二叉樹的左右子樹都具有類似的結構,二叉樹的題目往往和遞迴是關聯的。遍歷二叉樹的每乙個點,通常有三種方式,中序,前序,後序的方式,對應上圖的樹來說,結果是 3 4 1 2 5 前序 1 4 2 3 5 中序 1 2 4 5 3 後序 前 ...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...