从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

思路:这就是一个二叉树的层序遍历,借用一个队列来实现。

将二叉树的根节点放在队列里,然后从队列里取节点作为当前节点,如果当前节点的左节点不为null,则将左节点入队,然后判断右节点,如果当前节点的右节点不为null则入队。

举个栗子

           

首先,我们把1入队,

然后从队列中拿1,把1放入集合中,1的左子树是2,所以我们将2入队列,此时集合中的值:1  队列中没有值(因为我们把1拿出来了)

1的右子树是3,我们把3再入队列,  队列中的值为 2,3

我们接着取队列的头2,把2放入集合中,2的左子树是4,把4放入队列, 队列中的值为 3,4  集合中的值为1,2

2的右子树是5,把5放入队列, 队列中的值为 3,4,5

我们接着取队列的头3,把3放入集合中,3的左子树是6,把6放入队列, 队列中的值为 4,5,6 集合中的值为1,2,3

3的右子树是7,把7放入队列, 队列中的值为 4,5,6,7

我们接着取队列的头4,把4放入集合中,4的左子树是null,右子树也是null,所以我们接着从队列中取, 队列中的值为 5,6 集合中的值为1,2,3,4

我们接着取队列的头5,把5放入集合中,5的左子树是null,右子树也是null,所以我们接着从队列中取, 队列中的值为 6 集合中的值为1,2,3,4,5

我们接着取队列的头6,把6放入集合中,6的左子树是null,右子树也是null,所以我们接着从队列中取,  队列中的值没了,集合中的值为1,2,3,4,5,6

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

public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

} 
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
		    ArrayList<Integer> list = new ArrayList<Integer>();
		    if(root==null)
		    {
		    	return list ;
		    }
	        Queue<TreeNode> queue = new LinkedList<TreeNode>();
	        queue.add(root);
	       
	        while(!queue.isEmpty())
	        {  
	        	TreeNode node = queue.poll();
	        
	        	 list.add(node.val);
	        	 if(node.left!=null)
		            {
		            	queue.add(node.left);
		            }
	            if(node.right!=null)
	            {
	            	queue.add(node.right);
	            }
	        }
	        return list;
	    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值