题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
基本思路
本题考查了对数据结构的熟悉程度。
通过队列我们可以很方便地实现本题。具体操作:
- 如果对列不为空,则获取并打印队列头,然后将队列头的左右非空子节点放入队列。重复该操作即可。
以下为具体解答:
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
ArrayList<Integer> result = new ArrayList<>();
ArrayDeque<TreeNode> q = new ArrayDeque<>();
q.add(root);
while (!q.isEmpty()) {
TreeNode cur = q.poll();
result.add(cur.val);
if (cur.left != null) {
q.add(cur.left);
}
if (cur.right != null) {
q.add(cur.right);
}
}
return result;
}