您的位置:首页 > 其它

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

2017-11-14 22:06 211 查看
分析:本题中我们利用层序遍历的思想,首先将树中所有节点按照一层从左到右依次保存到ArrayList中,然后在逐一取出节点的值添加到集合中,最后返回集合。

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 {

    //层序遍历

    ArrayList<Integer> list=new ArrayList<Integer>();

    boolean flag=true;

    int i=0;

    int count=0;

    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {

        ArrayList<TreeNode> tn=new ArrayList<TreeNode>();//用于保存当前节点的左右子节点

        if(root !=null){

            tn.add(root);

            while(flag){

                if(root.left !=null){

                    //添加左子树

                    tn.add(root.left );

                    count++;

                }

                if(root.right !=null){

                    //添加右子树

                    tn.add(root.right);

                    count++;

                }

                if(i<count){

                    i++;

                    root=tn.get(i);//准备添加下一个节点的左右子节点

                }else{

                    flag=false;

                }

            }

        }

        for(int j=0;j<tn.size();j++){

            list.add(tn.get(j).val);

        }

        return list;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐