把二叉树打印成多行

来源:互联网 发布:md5 c语言实现 编辑:程序博客网 时间:2024/06/16 01:24

1、来源:把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

2、代码:

ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {        ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer>>();        Queue<TreeNode> queue = new LinkedList<TreeNode>();        if(pRoot != null)            queue.add(pRoot);        while(!queue.isEmpty()){            ArrayList<Integer> array = new ArrayList<Integer>();// 保存当前层的所有子节点            int breadth_num = queue.size(); //当前层的 节点数            TreeNode treeNode = queue.poll();            array.add(treeNode.val);            while(breadth_num != 0){//遍历当前层的所有节点                if(treeNode.left != null){//当前节点左子节点加入队列                    queue.add(treeNode.left);                }                if(treeNode.right != null){//当前节点右节点加入队列                    queue.add(treeNode.right);                }                breadth_num--; //表示当前层 节点数 遍历完成一个                if(breadth_num > 0){ //如果当前层还存在未节点节点,将节点放到该层数组中                    treeNode = queue.poll();                    array.add(treeNode.val);                }            }            res.add(array);        }        return res;    }