leetcode102 二叉樹的層序遍歷

2021-10-08 16:39:32 字數 2376 閱讀 5009

從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。

例如:

給定二叉樹:[3

,9,20

,null,null,15,

7],3

/ \ 9

20/ \

157

返回:

[3,9,20,15,7]

**實現:

#define int_max 1010

int*

levelorder

(struct treenode* root,

int* returnsize)

struct treenode*

* queue =

(struct treenode**)

malloc

(sizeof

(struct treenode)

* int_max)

;int

* res =

(int*)

malloc

(sizeof

(int

)* int_max)

;int head =0;

int tail =0;

int len =0;

queue[tail++

]= root;

while

(head < tail)

if(p -> right)}}

* returnsize = len;

return res;

}

第二題、為上題的變種

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。

例如:

給定二叉樹:[3

,9,20

,null,null,15,

7],3

/ \ 9

20/ \

157返回其層次遍歷結果:[[

3],[

9,20]

,[15,

7]]

**實現:

#define int_max 1010

int*

*levelorder

(struct treenode* root,

int* returnsize,

int*

* returncolumnsizes)

struct treenode*

* queue[int_max]

;int

** res =

(int**

)malloc

(sizeof

(int*)

* int_max)

;* returncolumnsizes =

(int*)

malloc

(sizeof

(int

)* int_max)

;int head =0;

int tail =0;

int level =0;

queue[tail++

]= root;

while

(head < tail)

if(p -> right)

res[level]

[i]= p -> val;

} level++;}

(* returnsize)

= level;

return res;

}

從上到下列印二叉樹3

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。

例如:

給定二叉樹:[3

,9,20

,null,null,15,

7],3

/ \ 9

20/ \

157返回其層次遍歷結果:[[

3],[

20,9]

,[15,

7]]

class

solution

queue > q;

q.push

(root)

;int level =0;

while

(q.size()

)if(p -

> right)

q.pop();

}if(level %2==

0)if(cols.

size()

)}return res;}}

;

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迴圈,迴圈次數...