leetcode-107

134 阅读1分钟

题目描述:具体描述见原题。简单来说就是倒序输出二叉树层次序遍历结果。

解题思路:层次序遍历二叉树有两种解法,广度优先遍历(BFS),深度优先遍历(DFS),为了突出层次,所以选择BFS,BFS更能直观体现遍历过程。具体过程见代码。

具体代码:

func levelOrderBottom(root *TreeNode) [][]int {
res := make([][]int, 0)
	if root == nil {
		return res
	}
	temp, next, queue, current, level := make([]int, 0), 0, make([]*TreeNode, 0), 1, make([][]int, 0)
	queue = append(queue, root)
	for len(queue) != 0 {
		for current != 0 {
			node := queue[0]
			if node.Left != nil {
				queue = append(queue, node.Left)
				next++
			}
			if node.Right != nil {
				queue = append(queue, node.Right)
				next++
			}
			temp = append(temp, node.Val)
			queue = queue[1:]
			current--
		}
		level = append(level, temp)
		current = next
		next = 0
		temp = make([]int, 0)
	} // 注释见leetcode-102(https://juejin.cn/post/7002939568697638919)
	for i := len(level)-1; i >= 0; i-- { // 倒序输出结果
		res = append(res, level[i])
	}
	return res
}

补充说明:无