leetcode102 二叉樹的層次遍歷

2021-09-28 18:19:47 字數 1189 閱讀 7266

一.  這題是重點學習題

1.  如何遍歷一棵樹,  有兩種通用的遍歷樹的策略:

深度優先搜尋(dfs)

在這個策略中,我們採用深度作為優先順序,以便從跟開始一直到達某個確定的葉子,然後再返回根到達另乙個分支。深度優先搜尋策略又可以根據根節點、左孩子和右孩子的相對順序被細分為先序遍歷,中序遍歷和後序遍歷。

寬度優先搜尋(bfs)

我們按照高度順序一層一層的訪問整棵樹,高層次的節點將會比低層次的節點先被訪問到。 下圖中的頂點按照訪問的順序編號,按照 1-2-3-4-5 的順序來比較不同的策略。

本問題就是用寬度優先搜尋遍歷來劃分層次:[[1], [2, 3], [4, 5]].

方法 1:遞迴

1.  先放上自己的思路.

//自己寫的,接下來可以對比一下官方的.

class solution

//有的話直接加入對應等級的vector.

levels[level].push_back(root->val);

//遞迴左右子樹.

2.  參考官方(好吧和自己寫的沒什麼區別).

複雜度分析

時間複雜度:o(n),因為每個節點恰好會被運算一次。     空間複雜度:o(n),儲存輸出結果的陣列包含n個節點的值。

方法 2:迭代

1.   上面的遞迴方法也可以寫成迭代的形式。我們將樹上頂點按照層次依次放入佇列結構中,佇列中元素滿足 fifo(先進先出)的原則。

LeetCode 102 二叉樹的遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 返回其層次遍歷結果 如下 definition for a binary tree node.public class treenode public class solution list res new ...

LeetCode 102 二叉樹的層次遍歷

題目鏈結 題目描述 給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 解決方法 廣度優先 層次 遍歷,使用佇列實現 具體思路 在訪問了乙個節點之後...

LeetCode 102 二叉樹的層次遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。即逐層地,從左到右訪問所有節點 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回其層次遍歷結果 3 9,20 15,7 此題需要將各個層的節點分別儲存到不同的陣列中。所以在while迴圈中,加了乙個for迴圈,迴圈次數...