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;
            }
        }
  • 相关阅读:
    Keil MDK中单个c文件生成LIB文件
    STM32标准外设库、 HAL库、LL库
    STM32CubeMX介绍、下载与安装
    static关键字的总结
    Qt中 QString 转 char*
    字符串(string)与整型(int)、浮点型(float)等之间的转换
    RF相关知识
    Qt4问题集锦
    Qt4程序在windows平台下打包发布
    (81)Client、Server通信模式和P2P通信模式的区别
  • 原文地址:https://www.cnblogs.com/developerY/p/Level_Order_Traversal.html
Copyright © 2011-2022 走看看