zoukankan      html  css  js  c++  java
  • 算法:从上往下打印二叉树

    题目描述

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

    问题:从上往下打印二叉树

    思路:用arraylist模拟一个队列来存储相应的TreeNode
    * 1:两个ArrayList。一个作为结果返回值,一个用来储存TreeNode;
    * 2: 判断非空,空的话直接返回list;
    * 3:tArray.size不为零,就将赋值给temp=tArray.remove(0);这里是精髓,每次都去掉已经加入的值;
    * 4:将temp.val加入list,两个非空判断,temp左右树非空,加入到tArray队列;

    package LG.nowcoder;
    
    import java.util.ArrayList;
    
    /**
     * @Author liguo
     * @Description 这个算法是真的巧妙,漂亮的不像实力派;
     * @问题:从上往下打印二叉树
     * @思路:用arraylist模拟一个队列来存储相应的TreeNode
     * 1:两个ArrayList。一个作为结果返回值,一个用来储存TreeNode;
     * 2: 判断非空,空的话直接返回list;
     * 3:tArray.size不为零,就将赋值给temp=tArray.remove(0);这里是精髓,每次都去掉已经加入的值;
     * 4:将temp.val加入list,两个非空判断,temp左右树非空,加入到tArray队列;
     * @Data 2018-08-14 15:31
     */
    public class Solution10 {
        public ArrayList <Integer> PrintFromTopToBottom(TreeNode root) {
            ArrayList <Integer> list = new ArrayList <Integer>();             //保存返回结果;
            ArrayList <TreeNode> tArray = new ArrayList <TreeNode>();         //储存二叉树;
            if (root == null) return list;                         //为空直接返回空的list
            tArray.add( root );                                  while (tArray.size() != 0) {
                TreeNode temp = tArray.remove( 0 );              //精髓,每次去掉已经加入tArray队列的temp值
                //左右非空,则添加到tArray队列中;
                if (temp.left != null) tArray.add( temp.left );
                if (temp.right != null) tArray.add( temp.right );
    
                list.add( temp.val );
            }
            return list;
        }
    
    }

    漂亮的不像实力派;

  • 相关阅读:
    CPPFormatLibary提升效率的优化原理
    Unity4、Unity5移动平台多线程渲染在部分安卓手机上会造成闪退
    Hello World!
    Mac/IOS/linux获取当前时间包含微秒毫秒的代码
    插入图块闪烁问题的原因
    选择实体时的选项
    dataGridView 单元格添加combox checkbox
    交互拾取点时 右键取消 禁止出现点无效
    曲线上到指定点最近的点
    移除实体应用程序名(xdata)
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/9477026.html
Copyright © 2011-2022 走看看