剑指Offer-二叉树-(4)

知识点/数据结构:二叉树

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

思路:

考察的实质是:考查树的遍历算法:按层打印的顺序应该是从根节点开始;
在这里插入图片描述

对于上图中的树:
1:先打印根节点8,同时把跟根节点的子节点6和10保存到容器中;
2:从容器中取出值为6 的节点,打印该节点后把它两个值为5和7的两个子节点存到容器之中,对值为10 的节点进行同样的操作;
3:重复2的步骤,值为5,7,9,11的节点没有子节点直接打印即可。总结上述过程,发现上述过程的特点是先进先出,因此不难发现这个容器的数据结构应该选取队列

总结上述过程:每次打印以一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个对列的队尾。接下来到队列的头部取出最早进入队列的节点,重复前面的打印操作,直至队列中所有的节点被打印出来。

import java.util.ArrayList;//2018年5月9号自己编写
import java.util.Deque;
import java.util.LinkedList;
public class Solution{
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root){
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        if(root==null)   return list;
        
        Deque <TreeNode>  xx = new LinkedList<TreeNode>();
        xx.add(root);
        while(!xx.isEmpty()){
            TreeNode temp = xx.pop();//
            list.add(temp.val);//这两行是关键
            if(temp.left!=null){
                xx.add(temp.left);
            }
            if(temp.right!=null){
                xx.add(temp.right);
            }
        }
        return list;
    }
}

过程中出现的错误:

四个错误:

树节点是t而不是Root Deque是接口不可以实例化对象;
方法isEmpty();
if 判断的是左右子树;
Deque是一个接口 下面是他的继承类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值