博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Level Order Traversal
阅读量:6604 次
发布时间:2019-06-24

本文共 1402 字,大约阅读时间需要 4 分钟。

题目说明

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
> levelOrder(TreeNode root) { // Note: The Solution object is instantiated only once and is reused by each test case. ArrayList
> ans=new ArrayList
>(); if(root==null) return ans; Queue
list=new LinkedList
(); list.add(root); while(!list.isEmpty()) { ArrayList
levelNodes=new ArrayList
(); ArrayList
res=new ArrayList
(); 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; } }

 

转载于:https://www.cnblogs.com/developerY/p/Level_Order_Traversal.html

你可能感兴趣的文章
php获取某年某月的天数
查看>>
用XAML做网页!!—框架
查看>>
九度 1551 切蛋糕(数学)
查看>>
CentOS安装CodeBlocks
查看>>
Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量
查看>>
c++课程设计(日历)
查看>>
poj 1696:Space Ant(计算几何,凸包变种,极角排序)
查看>>
Android单行本+多渠道脚本工具
查看>>
C#预处理命令
查看>>
IOS7 新特性
查看>>
iOS NSNotification的使用
查看>>
Android使用AndEngine创建第一个程序
查看>>
Android WebRTC 音视频开发总结(五)-- webrtc开发原型
查看>>
python-django如何在sae中使用自带ImageField和FileField -django-上善若水小站
查看>>
Java多线程之后台线程
查看>>
win7下面iis错误汇总
查看>>
22种代码的坏味道,一句话概括
查看>>
HTML中Select的使用具体解释
查看>>
使用GSON和泛型解析约定格式的JSON串(转)
查看>>
如何让多个android listview同时使用一个滚动条
查看>>