T57:把二叉树打印成多行(Java)

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

分析:很明显可以利用队列 先进先出 但题目要求是每一层输出一行 这才是题目的关键。于是应该增加2个变量 来记录队列的长度和当前打印数。

int count =0 ,int len =s.size();

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

/*
 * 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
 */
public class Print2 {
	public class TreeNode {
	    int val = 0;
	    TreeNode left = null;
	    TreeNode right = null;

	    public TreeNode(int val) {
	        this.val = val;
	    }
	}
	 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
		 
		 ArrayList<ArrayList<Integer> > list =new ArrayList<ArrayList<Integer> >();
		 if(pRoot==null){
			 return list;
		 }
		 Queue<TreeNode> s=new LinkedList<TreeNode>();
		 s.add(pRoot);
		 int len =s.size();int count=0;
		 while(!s.isEmpty()){
			 ArrayList<Integer> temp=new ArrayList<Integer>();
			 count =0;len=s.size();
			 while(count<len){
				 TreeNode node =s.remove();
				  temp.add(node.val);
				  if(node.left!=null){
				  s.add(node.left);}
				  if(node.right!=null){
				  s.add(node.right);}
                  count++;
			 }
			 if(!temp.isEmpty()){
				 list.add(temp); 
			 }
		 }
		return list;
		    
	    }
}

还可以使用递归:请参考https://blog.csdn.net/ouyangyanlan/article/details/72876335

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值