Tree - 102. Binary Tree Level Order Traversal
时间:2022-07-25
本文章向大家介绍Tree - 102. Binary Tree Level Order Traversal,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
102. Binary Tree 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,null,null,15,7]
,
3
/
9 20
/
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
思路:
层序遍历二叉树,这一题和637题很像,637是求每一层的平均值,这一题只让打印出来,可以用bfs做,也可以使用dfs做,这里用bfs做,有递归写法和非递归写法,非递归写法使用了队列在存储下一层要遍历的节点。
代码:
go:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/*// bfs recursive
func levelOrder(root *TreeNode) [][]int {
var res [][]int
if root == nil { return res }
traversalNode(root, &res, 0)
return res
}
func traversalNode(node * TreeNode, res *[][]int, h int) {
if node == nil { return }
if len(*res) < h + 1 {
*res = append(*res, []int{})
}
(*res)[h] = append((*res)[h], node.Val)
traversalNode(node.Left, res, h+1)
traversalNode(node.Right, res, h+1)
}*/
// bfs iterative
func levelOrder(root *TreeNode) [][]int {
var res [][]int
if root == nil {
return res
}
queue := []*TreeNode{root}
for len(queue) != 0 {
var temp []int
var nextQ []*TreeNode
for len(queue) != 0 {
cur := queue[0]
queue = queue[1:]
temp = append(temp, cur.Val)
if cur.Left != nil {
nextQ = append(nextQ,cur.Left)
}
if cur.Right != nil {
nextQ = append(nextQ,cur.Right)
}
}
res = append(res, temp)
queue = append(queue, nextQ...)
}
return res
}
- 龚宏绩:三七互娱游戏上云的现状与未来
- Android 程序打包及签名
- 韩伟:解谜腾讯游戏海量服务架构
- Message和handler传递对象
- MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题
- 结构struct(值类型)在实际应用要注意的二点:
- 王璋:腾讯云为游戏行业提供解决方案
- 利用Reflector把"闭包"看清楚
- CSS伪类的三种写法
- 吴晓斌:"吃鸡"游戏全球多地部署架构分析
- silverlight + wcf(json格式) + sqlserver存储过程分页
- 联众收购多家公司 多枚域名齐助阵
- Android AlertDialog去除黑边白边自定义布局(转)
- “超自然”域名近139万易主
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python Debug(调试)的终极指南
- Linux下做计算常用的别名alias推荐
- 离线安装支持Intel MKL的R-3.6
- Dalton使用——磷光及其相关过程
- 【赵渝强老师】Flink的Watermark机制(基于Flink 1.11.0实现)
- 在Windows CMD里“使用”常见Linux命令
- 什么是Python中的Dask,它如何帮助你进行数据分析?
- a[i] = i++ 到底对不对?
- 如何监视Python程序的内存使用情况
- df -h和du -sh看到的硬盘使用不相等?
- MyBatis 中的一级和二级缓存
- 使用Cython加速你的Python代码
- 使用Python从PDF文件中提取数据
- 用Docker快速实现SAPT能量分解分析
- 腾讯云一句话识别-iOS SDK