题目
从上往下打印出二叉树的每个节点,同层节点从左至右打印
解题思路
从此题目为二叉树的按层遍历,具体步骤如下:
1.创建两个动态队列,一个用来盛放结点,另一个盛放对应结点的值
2.将根结点存入队列中
3.将根结点左右子结点的值依次存入到队列中,直到子节点为空
4.存放顺序,先存左子节点,再存右子节点
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<TreeNode> listNode = new ArrayList<TreeNode>();
ArrayList<Integer> listVal = new ArrayList<Integer>();
if (root == null) {
return listVal;
}
listNode.add(root);
listVal.add(root.val);
for (int i = 0; i < listNode.size(); i++) {
TreeNode node = listNode.get(i);
if (node.left != null) {
listNode.add(node.left);
listVal.add(node.left.val);
}
if (node.right != null) {
listNode.add(node.right);
listVal.add(node.right.val);
}
}
return listVal;
}
}