码迷,mamicode.com
首页 > 其他好文 > 详细

62.把二叉树打印成多行

时间:2019-06-01 23:33:02      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:清空   print   定义   保存   更新   linked   imp   目标   题目   

题目描述:

??从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路分析:

??每一层都从左到右输出,我们可以用队列保存层序遍历的节点,这道题的难点在于,如何判断每一层节点的数目,以达到按层输出的目标,我们可以定义两个变量,nownum,和nextnum,分别记录当前层的节点数,和下一层的节点数。当nownum减为0的时候表示当前层遍历完。

代码:

import java.util.*;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>>res=new ArrayList<>();
        ArrayList<Integer>list=new ArrayList<>();
        if(pRoot==null)
            return res;
        Queue<TreeNode>q=new LinkedList<>();
        int nownum=1;
        int nextnum=0;
        q.offer(pRoot);
        while(!q.isEmpty()){
            TreeNode pNode=q.poll();
            nownum--;
            list.add(pNode.val);
            if(pNode.left!=null){
                q.offer(pNode.left);
                nextnum++;
            }
            if(pNode.right!=null){
                q.offer(pNode.right);
                nextnum++;
            }
            if(nownum==0){
                res.add(list);
                list=new ArrayList<>();
                nownum=nextnum;     //一层遍历完后更新nownum的值,将nextnum清空。
                nextnum=0;
            }
        }
        return res;
    }
    
}

62.把二叉树打印成多行

标签:清空   print   定义   保存   更新   linked   imp   目标   题目   

原文地址:https://www.cnblogs.com/yjxyy/p/10961289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!