從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
遞迴,節點加入對應層數的list中
public
class
solution
public
void
depth
(treenode root,
int depth, arraylist
> list)
if(depth > list.
size()
) list.
get(depth-1)
.add
(root.val)
;depth
(root.left, depth+
1, list)
;depth
(root.right, depth+
1, list);}
}
非遞迴,用null標記每層的開始,或用start==end標記每層的結束,end為每層的節點數
public
class
solution
queue
q =newlinkedlist
<
>()
; q.
offer
(null)
; q.
offer
(proot)
; arraylist
list =
newarraylist
<
>()
;while
(q.size()
>1)
ret.
add(
newarraylist
(list));
list.
clear()
; q.
offer
(null)
;continue;}
if(node.left != null)
if(node.right != null)
}return ret;
}}
60 把二叉樹列印成多行
題目描述 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。分析 和59題類似,使用兩個佇列實現。從左至右列印當前行的結點時,將當前結點在下一行的左 右子結點放入佇列中,列印下一行時從佇列取出即可。保證列印完一行後將佇列置空,儲存下一行。struct treenode class so...
用層次遍歷把二叉樹列印成多行
這是一題關於樹的遍歷的題目,解題思路是在二叉樹的層次遍歷演算法中稍作修改,讓二叉樹的每一層都能儲存在不同的集合中。以下是解題 所有的解題思路都寫在 中 using system.collections.generic public class treenode 從上到下按層列印二叉樹,同一層結點從左...
把二叉樹列印成多行
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。中序遍歷,使用佇列,將每一行的元素依次壓入佇列,每將佇列中元素彈出乙個就將其左右子節點壓入佇列。在每一行的開始節點時,佇列中元素的個數就是下一行節點的個數,通過計數取出該行所有元素。struct treenode class solut...