Java教程

NC80 把二叉树打印成多行 Java

本文主要是介绍NC80 把二叉树打印成多行 Java,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

描述
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出。每一层输出一行。
例如:
给定的二叉树是{1,2,3,#,#,4,5}
在这里插入图片描述

该二叉树多行打印层序遍历的结果是
[
[1],
[2,3],
[4,5]
]

示例1
输入:{1,2,3,#,#,4,5}
返回值:[[1],[2,3],[4,5]]

示例2
输入:{8,6,10,5,7,9,11}
返回值:[[8],[6,10],[5,7,9,11]]

示例3
输入:{1,2,3,4,5}
返回值:[[1],[2,3],[4,5]]

示例4
输入:{}
返回值:[]

运用BFS解决

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<>();
        if(pRoot == null){
            return res;
        }
        
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(pRoot);
        while(!queue.isEmpty()){
            ArrayList<Integer> list = new ArrayList<>();
            int size = queue.size();
            while(size > 0){
                TreeNode temp = queue.poll();
                list.add(temp.val);
                if(temp.left != null){
                    queue.offer(temp.left);
                }
                if(temp.right != null){
                    queue.offer(temp.right);
                }
                size--;
            }
            res.add(list);
        }
        return res;
    }
    
}
这篇关于NC80 把二叉树打印成多行 Java的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!