從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。
例如:
給定二叉樹:[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迴圈,迴圈次數...