• 算法:从上往下打印二叉树


    题目描述

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

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

    思路:用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;
        }
    
    }

    漂亮的不像实力派;

  • 相关阅读:
    万字攻略,详解腾讯面试
    百度广告产品系统级测试技术演进
    TAR部署MYSQL(1)
    RPM部署MYSQL
    大数据学习之Linux(3)
    大数据学习之linux(2)
    大数据学习之linux(1)
    pycharm安装与破解
    Dijkstra—校园景点游览问题
    哈夫曼编译码器
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/9477026.html
Copyright © 2020-2023  润新知