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
}
- 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 数组属性和方法