美文网首页
JZ-060-把二叉树打印成多行

JZ-060-把二叉树打印成多行

作者: 醉舞经阁半卷书 | 来源:发表于2022-01-18 00:03 被阅读0次

    把二叉树打印成多行

    题目描述

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

    题目链接: 把二叉树打印成多行

    代码

    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Queue;
    
    /**
     * 标题:把二叉树打印成多行
     * 题目描述
     * 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
     * 题目链接:
     * https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&&tqId=11213&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
     */
    public class Jz60 {
    
        /**
        * 递归
        **/
        ArrayList<ArrayList<Integer>> print(TreeNode pRoot) {
            Queue<TreeNode> treeNodes = new LinkedList<TreeNode>();
            ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
            treeNodes.add(pRoot);
            while (!treeNodes.isEmpty()) {
                Queue<TreeNode> curNodes = new LinkedList<TreeNode>();
                curNodes.addAll(treeNodes);
                while (!treeNodes.isEmpty()) {
                    treeNodes.poll();
                }
                ArrayList<Integer> curList = new ArrayList<Integer>();
                while (!curNodes.isEmpty()) {
                    TreeNode t = curNodes.poll();
                    if (t == null) {
                        continue;
                    }
                    curList.add(t.val);
                    treeNodes.add(t.left);
                    treeNodes.add(t.right);
                }
                if (!curList.isEmpty()) {
                    result.add(curList);
                }
            }
            return result;
        }
    
        public static void main(String[] args) {
        
        }
    }
    

    【每日寄语】 请你再悄悄地努力一下,但愿有一天你可以说出那句话,我终于成为了不负众望的人了。

    相关文章

      网友评论

          本文标题:JZ-060-把二叉树打印成多行

          本文链接:https://www.haomeiwen.com/subject/xzwhhrtx.html