zoukankan      html  css  js  c++  java
  • 剑指 offer-从上往下打印二叉树

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

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

    思路:考察二叉树的 层序遍历,通常借助使用一个队列或一个栈来完成

    若是要求每层数据从左到右保存则用队列,若是要求每层数据从右到左保存则用栈(这种要求一般出现在“之”字型遍历 二叉树的题上)

    题目本身好像要求只能用ArrayList,我这里直接用队列解了

     1 import java.util.ArrayList;
     2 import java.util.LinkedList;
     3 import java.util.Queue;
     4 /**
     5 public class TreeNode {
     6     int val = 0;
     7     TreeNode left = null;
     8     TreeNode right = null;
     9 
    10     public TreeNode(int val) {
    11         this.val = val;
    12 
    13     }
    14 
    15 }
    16 */
    17 public class Solution {
    18     public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
    19         ArrayList<Integer>list=new ArrayList<>();
    20        Queue<TreeNode>queue=new LinkedList<>();
    21         if(root==null)return list;
    22         queue.offer(root);
    23         while(!queue.isEmpty()){
    24             TreeNode tmp=queue.poll();
    25             if(tmp.left!=null)queue.offer(tmp.left);
    26             if(tmp.right!=null)queue.offer(tmp.right);
    27             list.add(tmp.val);
    28         }   
    29     return list;
    30     }
    31 }

    当然,直接用一个ArrayList模仿队列也可以的

     1 import java.util.ArrayList;
     2// 用arraylist模拟一个队列来存储相应的TreeNode
     3 
     4 public class Solution {
     5     public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
     6         ArrayList<Integer> list = new ArrayList<>();
     7         ArrayList<TreeNode> queue = new ArrayList<>();
     8         if (root == null) {
     9             return list;
    10         }
    11         queue.add(root);
    12         while (queue.size() != 0) {
    13             TreeNode temp = queue.remove(0);
    14             if (temp.left != null){
    15                 queue.add(temp.left);
    16             }
    17             if (temp.right != null) {
    18                 queue.add(temp.right);
    19             }
    20             list.add(temp.val);
    21         }
    22         return list;
    23     }
    24 }
  • 相关阅读:
    UIScrollView的滚屏
    ASIHTTPRequest 详解, 够详细
    Libxml2中使用xpath解析xml问题
    new Random()结果相同问题
    UINavigationController使用的一些技巧
    Objectivec 模拟http请求
    开发视频网站,asp.net视频文件转换.flv格式(转)
    jqueryjCarousel 配置选项
    NSDate和NSString之间的转换,(可以转时区的哈)
    NSLog的格式
  • 原文地址:https://www.cnblogs.com/pathjh/p/9172988.html
Copyright © 2011-2022 走看看