62.把二叉树打印成多行

Posted yjxyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    
    

以上是关于62.把二叉树打印成多行的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer——把二叉树打印成多行

把二叉树打印成多行

《剑指offer》:[60]把二叉树打印成多行

剑指offer---把二叉树打印成多行

剑指offer——把二叉树打印成多行

剑指offer——把二叉树打印成多行