zoukankan      html  css  js  c++  java
  • [LeetCode] Level Order Traversal

    题目说明

    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]

    ]

    OJ's Binary Tree Serialization:

    The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

    Here's an example:

       1

      /

     2   3

        /

       4

       

         5

    The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".

    思路

    这道题可以这么做:用一个队列来保存每层节点,遍历该层所有节点同时将每个节点加到结果中,同时将每个节点的子女节点用一个list保存下来,遍历完本层节点后,将保存的子女节点加到队列中继续遍历。直到子女节点为空(也就是队列为空)为止

    代码

    public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
                // Note: The Solution object is instantiated only once and is reused by each test case.
                ArrayList<ArrayList<Integer>> ans=new ArrayList<ArrayList<Integer>>();
                if(root==null)
                    return ans;
                Queue<TreeNode> list=new LinkedList<TreeNode>();
                list.add(root);
                while(!list.isEmpty())
                {
                    ArrayList<TreeNode> levelNodes=new ArrayList<TreeNode>();
                    ArrayList<Integer> res=new ArrayList<Integer>();
                    while(!list.isEmpty())
                    {
                        TreeNode node=list.poll();
                        if(node.left!=null)
                            levelNodes.add(node.left);
                        if(node.right!=null)
                            levelNodes.add(node.right);
                        res.add(node.val);
                    }
                    list.addAll(levelNodes);
                    ans.add(res);
                }
                return ans;
            }
        }
  • 相关阅读:
    exchange 2010 数据库管理
    windows Sql server performance monitor
    windows powershell
    开始Dev之路
    配置adb环境
    android当中安装androidstudio时问题
    进阶之旅(一)
    ubuntu 下配置Android环境
    Android开发中的设计模式
    android anr之后如何导出traces.txt
  • 原文地址:https://www.cnblogs.com/developerY/p/Level_Order_Traversal.html
Copyright © 2011-2022 走看看