zoukankan      html  css  js  c++  java
  • Binary Tree Level Order Traversal java实现

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree {3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

    [
      [3],
      [9,20],
      [15,7]
    ]

    实现的关键在于定义两个标记位和队列:
    1、标志位last和end。last为记录的是本层次的最后一个最后一个结点,end用于寻找下一层的最后一个结点。
    2、队列是用于存储每个结点。
    public class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
                List<List<Integer>> list = new ArrayList<>();
                List<Integer> lst = new ArrayList<>();
                Queue<TreeNode> queue = new LinkedList<>();
                queue.add(root);
                TreeNode last =root;
                TreeNode end = null;
                while(!queue.isEmpty()){
                    TreeNode t = queue.remove();
                    if(t!=null){
                        lst.add(t.val);
                    if(t.left != null){
                        queue.add(t.left);
                        end = t.left;
                    }
                    if(t.right != null){
                        queue.add(t.right);
                        end = t.right;
                    }
                    if(t == last ){
                        list.add(lst);
                        last =end;
                        lst = new ArrayList<>();
                    }
                    }   
                } 
                  return list;
            }
    }
  • 相关阅读:
    R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
    yolov3的anchor机制与损失函数详解
    CV资料推荐
    测试用例设计方法总结
    测试需求分析
    bug生命周期
    linux命令一
    linux 命令二
    linux 命令三
    mysql数据库和禅道安装
  • 原文地址:https://www.cnblogs.com/rolly-yan/p/3832636.html
Copyright © 2011-2022 走看看