算法-把二叉树打印成多行

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 算法-把二叉树打印成多行,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

package niuke;

import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;



public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer> > totalNode = new ArrayList<ArrayList<Integer> >();
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        ArrayList<Integer> layerNode = new ArrayList<Integer>();
        queue.add(pRoot);
        
        Queue<TreeNode> result = new LinkedList<TreeNode>();
        TreeNode node = null;
        while(queue.size() != 0){
            layerNode = new ArrayList<Integer>();
            while((node = queue.poll())!=null){
                layerNode.add(node.val);
                if(node.left!=null) {
                	result.offer(node.left);
                }
                if(node.right!=null){
                	result.offer(node.right);
                }
            }
            queue = result;
            result=new LinkedList<TreeNode>();
            if(!layerNode.isEmpty()){
            	System.out.println(layerNode);
            	totalNode.add(layerNode);
            }
        }
        return totalNode;
    }
    
    ArrayList<ArrayList<Integer> > Print2(TreeNode pRoot) {
      ArrayList<ArrayList<Integer>> result = new ArrayList<>();
      ArrayList<Integer> list = new ArrayList<>();
      Queue<TreeNode> queue = new LinkedList<>();
      TreeNode temp;
      if(pRoot == null){
          return result;
      }
      queue.offer(pRoot);
      int start = 0,end = 1;
      while(!queue.isEmpty()){
          temp = queue.poll();
          list.add(temp.val);
          start++;
          if(temp.left != null){
              queue.offer(temp.left);
          }
          if(temp.right != null){
              queue.offer(temp.right);
          }
          if(start == end){
              start = 0;
              end = queue.size();
              result.add(list);
              list = new ArrayList<>();
          }
      }
      return result;
  }
    
   public static void main(String[] args) {
  	 TreeNode node1 = new TreeNode(8);
  	 TreeNode node21 = new TreeNode(6);
  	 TreeNode node22 = new TreeNode(10);
  	 TreeNode node31 = new TreeNode(5);
  	 TreeNode node32 = new TreeNode(7);
  	 TreeNode node33 = new TreeNode(9);
  	 TreeNode node34 = new TreeNode(11);
  	 node1.left = node21;
  	 node1.right = node22;
  	 
  	 node21.left = node31;
  	 node21.right = node32;
  	 
  	 node22.left = node33;
  	 node22.right = node34;
  	 
  	 new Solution().Print(node1);
	}
    
}
class TreeNode {
  int val = 0;
  TreeNode left = null;
  TreeNode right = null;

  public TreeNode(int val) {
      this.val = val;
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140829.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!