• 把二叉树打印成多行


    题目

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

    分析

      用队列从根开始存储,首先判断队列是否为空,若不为空,取出第一个元素,将该元素的左孩子和右孩子(在有的情况下)继续存到队列中,知道队列为空。

      ,因为返回的是ArrayList<ArrayList<Integer>>类型,所以我们应该注意在哪里去创建ArrayList<Integer>。

    代码

     1     ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
     2         ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
     3         if(pRoot==null)
     4             return list;
     5         Queue<TreeNode> q = new LinkedList<TreeNode>();
     6         q.add(pRoot);
     7         while(!q.isEmpty()){
     8             int low = 0, high = q.size();
     9             ArrayList<Integer> li = new ArrayList<Integer>();
    10             while(low<high){
    11                 TreeNode node = q.poll();
    12                 li.add(node.val);
    13                 if(node.left!=null)
    14                     q.add(node.left);
    15                 if(node.right!=null)
    16                     q.add(node.right);
    17                 low++;
    18             }
    19             list.add(li);
    20         }
    21         return list;
    22     }
  • 相关阅读:
    spring-mvc dispatcherServlet
    常用注解
    spring基础
    消息转换
    高级装配
    Leetcode第242题:有效的字母异位词
    Leetcode第76题:最小覆盖子串
    Leetcode633题平方数之和
    Leetcode454题四数之和II
    java从虚拟机执行角度解析案例(转)
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/7017994.html
Copyright © 2020-2023  润新知