zoukankan      html  css  js  c++  java
  • 62.把二叉树打印成多行

    题目描述:

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

    思路分析:

      每一层都从左到右输出,我们可以用队列保存层序遍历的节点,这道题的难点在于,如何判断每一层节点的数目,以达到按层输出的目标,我们可以定义两个变量,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;
        }
        
    }
    
  • 相关阅读:
    kubeadm升级证书-集群已GG
    匿名内部类
    JAVA中Integer的==和equals注意
    编写高效优雅安全Java程序的常见原则
    图解排序算法(二)之希尔排序
    String常见问题
    ActiveMQ 2
    消息中间件概述和AaciveMQ 1
    类加载器-5
    使用MyBatis编写Dao的两种语法
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10961289.html
Copyright © 2011-2022 走看看