该题目来源于牛客网《剑指offer》专题。

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

不需分层,一维数组。

Go语言实现:

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) []int {
var result []int if root == nil {
return result
} //初始化一个队列
list := list.New()
//从头部插入root
list.PushFront(root) //开始层次遍历,即广度优先遍历
for list.Len() > 0 {
//取本层的节点数
curentLenth := list.Len()
for i := 0; i < curentLenth; i++ {
//从尾部移除,Remove返回值为接口类型,需指定为TreeNode
node := list.Remove(list.Back()).(*TreeNode)
result = append(result, node.Val)
if node.Left != nil {
list.PushFront(node.Left)
}
if node.Right != nil {
list.PushFront(node.Right)
}
}
} return result
}

最新文章

  1. [转载]T-SQL(Oracle)语句查询执行顺序
  2. ubuntu使用
  3. PHP中的抽象类和接口
  4. Google perf tools for nginx
  5. Java 中 String 类和StringBuilder 类的常用方法
  6. shell变量自增的几种方式
  7. Java魔法堂:JVM的运行模式 (转)
  8. BFS and Queue
  9. CLR查找和加载程序集的方式(二) 流程图
  10. c语言项目开发流程一部曲
  11. mysql的left jion:就是left outer join(right join同理)
  12. Redis设计与实现:读书笔记之二
  13. Python实现机器学习算法:感知机
  14. 一个rcu回调导致的简单死锁
  15. cookie的安全性问题
  16. webstorm编译less和scss
  17. 打包工具的核心原理(转自:https://juejin.im/entry/5b223ebd518825748b569bda)
  18. centos-iptables-scripts
  19. Draw a Mess (并查集)
  20. Python3解leetcode Maximum Subarray

热门文章

  1. 你真的看懂Android事件分发了吗?
  2. 初级程序员如何一分钟?解决一个BUG
  3. Java类成员之代码块
  4. linux死机解决办法
  5. rest实践1
  6. 开源项目SMSS开源项目(三)——protobuf协议设计
  7. python命名空间(namespace)
  8. 那些不懂hystrix的秘密
  9. __new__ 方法
  10. JS中字符串切片