对树和图的知识忘的差不多了,借助LC重新复习一遍
下面是二叉树的层次遍历
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
ret := [][]int{}
if root == nil{
return ret
}
//q代表当前层的队列
q := []*TreeNode{root}
// i就代表了第i层
for i:=0;len(q)>0;i++{
ret = append(ret,[]int{})
//p保存下一层节点的队列
p:=[]*TreeNode{}
//每一层的数据
for j:=0;j<len(q);j++{
node := q[j]
ret[i] = append(ret[i],node.Val)
// 添加下一层的节点到p队列中
if node.Left != nil{
p = append(p, node.Left)
}
if node.Right != nil {
p = append(p, node.Right)
}
}
q = p
}
return ret
}