题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析
1.一个链表存放数据,一个链表存放节点
2.把根节点加入的节点链表,然后遍历左右节点,并且把对于节点的值加入存放数据的链表。
3.返回节点的数据的链表。
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
//定义一个链表存放数据
ArrayList<Integer> list = new ArrayList<>();
//定义一个节点是存放节点。
ArrayList<TreeNode> queue = new ArrayList<>();
//如果是空。
if (root == null) {
return list;
}
//把根节点存到链表里。
queue.add(root);
//当链表长度不为空
while (queue.size() != 0) {
//定义一个临时的节点,存放,根节点
TreeNode temp = queue.remove(0);
//判断根节点的左节点是否为空。调用他左节点并且把左子树存进去。
if (temp.left != null){
queue.add(temp.left);
}
判断根节点的左节点是否为空。调用他右节点并且把左子树存进去。
if (temp.right != null) {
queue.add(temp.right);
}
//存节点对应的值。
list.add(temp.val);
}
return list;
}
}