二叉树层序遍历BFS模板

leetcode 刷题记录
层序遍历模板,语言为 golang

func bfs(p *TreeNode) []int {
	res := make([]int, 0)
	if p == nil {
		return res
	}
	queue := []*TreeNode{p}
	for len(queue) > 0 {
		length := len(queue)
		for length > 0 {
			length--
			if queue[0].Left != nil {  //插入左子树
				queue = append(queue, queue[0].Left)
			}
			if queue[0].Right != nil {  //插入右子树
				queue = append(queue, queue[0].Right)
			}
			res = append(res, queue[0].Val)  //取根节点的值
			queue = queue[1:]   //根节点出队
		}
	}
	return res
}

你可能感兴趣的:(数据结构,leetcode,队列,二叉树,数据结构,queue)