题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。
 
 
题目链接:
 
 
 
分析:
用一个队列记录当前访问的节点,并将当前的节点的子节点加到队列尾。
 
 
 
 
import java.util.ArrayList;
import java.util.LinkedList;
/**
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<Integer> list =new ArrayList<>();
        //空格的情况直接返回
        if(root == null){
            return list;
        }
        LinkedList<TreeNode> mas =new LinkedList<>();
        //压入主队列根节点
        mas.add(root);
        while(!mas.isEmpty()){
            //每一次循环,将当前节点的子节点加到队列的尾部。
            while(!mas.isEmpty()){
                TreeNode node = mas.pop();
                list.add(node.val);
                if(node.left != null){
                    mas.add(node.left);
                }
                if(node.right != null){
                    mas.add(node.right);
                }
            }
        }
        return list;
    }
}

 

 
 
 
 
 
 
 
 
 
 
 
 
分析:
用两个辅助队列。
主队列存储当前一行的记录。
辅助队列记录下下一行的记录,记录完后,再将这行记录放入主队列中。
 
 
 
import java.util.ArrayList;
import java.util.LinkedList;
/**
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<Integer> list =new ArrayList<>();
        //空格的情况直接返回
        if(root == null){
            return list;
        }
        //主队列和辅助队列
        LinkedList<TreeNode> mas =new LinkedList<>();
        LinkedList<TreeNode> fz =new LinkedList<>();
        //压入主队列根节点
        mas.add(root);
        while(!mas.isEmpty()){
            //每一次循环,将主队列代表的一行记录加到list中,并将下一行记录到辅助队列
            while(!mas.isEmpty()){
                TreeNode node = mas.pop();
                list.add(node.val);
                if(node.left != null){
                    fz.add(node.left);
                }
                if(node.right != null){
                    fz.add(node.right);
                }
            }
            //将辅助队列的一行记录加到主队列中
            while(!fz.isEmpty()){
                mas.add(fz.pop());
            }
        }
        return list;
    }
}

 

posted on 2020-06-06 17:01  MoonBeautiful  阅读(123)  评论(0编辑  收藏  举报