32、从上往下打印二叉树

1、题目描述:

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

2、思路:

  从上往下逐层遍历二叉树,需要借助外部队列实现,先将根节点放入队列,打印根节点时,遍历根节点是否有左右子节点,然后将根节点的左、右子节点放到队列中存储,然后依次打印其左右子节点,并且在打印的时候,同样检查其是否有子节点,有就放入容器。

  简言之,每次从队列中取出一个子节点进行打印,都检查其是否有左右子节点,有就将其存储至队列,重复上面操作,直至打印出所有的节点。

3、代码:java中可以借助ArrayList实现。因为ArrayList实现List接口,其特点就是元素有序,即元素的存入顺序和取出顺序一致。

import java.util.ArrayList;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }
}
*/
public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
     //结果集合 ArrayList
<Integer> list=new ArrayList<Integer>();
     //辅助容器 ArrayList
<TreeNode> list2=new ArrayList<TreeNode>(); if(root==null){ return list; } list2.add(root); while(list2.size()!=0){ TreeNode temp=list2.remove(0); if(temp.left!=null){ list2.add(temp.left); } if(temp.right!=null){ list2.add(temp.right); } list.add(temp.val); } return list; } }

注意:代码的鲁棒性,检查方法输入空指针。

猜你喜欢

转载自www.cnblogs.com/guoyu1/p/12143954.html