题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路: 即广度优先搜索 1.用一个队列保存每一层的节点,然后逐个搜索 2.从队首开始,用数组保存每个节点的值 即: 1.先将第一层A进队,保存A节点的值 2.再将第二层B、C节点进队,再保存B、C节点的值 …
实现:
public class Solution {
public ArrayList
<Integer> PrintFromTopToBottom(TreeNode root
) {
ArrayList
<Integer> list
= new ArrayList<Integer>();
if(root
== null
)
return list
;
Deque
<TreeNode> deque
= new LinkedList<TreeNode>();
deque
.add(root
);
while(!deque
.isEmpty()){
TreeNode t
= deque
.pop();
list
.add(t
.val
);
if(t
.left
!= null
)
deque
.add(t
.left
);
if(t
.right
!= null
)
deque
.add(t
.right
);
}
return list
;
}
}