iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Software Development

算法30天系列 第 27

Day. 27 Binary Tree Level Order Traversal

Leetcode #102. Binary Tree Level Order Traversal

簡單來說我們要回傳每一層樹的值
ex:

    3
   / \
  2   10
 /   /  \
1   8   13

output: [[3],[2,10],[1,8,13]]


防雷
防雷
防雷


大家還記得preOrder嗎?
preOrder是從上到下的走訪,我們只要在DFS的時候,多帶一個層數就可以解掉這題了~

程式:

func levelOrder(root *TreeNode) [][]int {
	result := [][]int{}
	if root == nil {
		return result
	}

	DFS(&result, root, 0)

	return result
}

func DFS(result *[][]int, node *TreeNode, level int) {
	if node == nil {
		return
	}

    // 把node的值 加到slice裡面
	if len(*result) <= level {
		*result = append(*result, []int{node.Val})
	} else {
		(*result)[level] = append((*result)[level], node.Val)
	}

    // 層數要+1
	DFS(result, node.Left, level+1)
	DFS(result, node.Right, level+1)
}

上一篇
Day.26 Binary Search Tree IV
下一篇
Day. 28 Recover Binary Search Tree
系列文
算法30天30

尚未有邦友留言

立即登入留言