LeetCode热题100道-Day09

69 阅读1分钟

LeetCode热题100道-Day09

78. 子集

  • 递归遍历所有情况
var res [][]int
var list []int

func subsets(nums []int) [][]int {
	res = make([][]int, 0)
	list = make([]int, 0)
	tra(nums, 0)
	return res
}
func tra(nums []int, start int) {
	temp := make([]int, len(list))
	copy(temp, list)
	res = append(res, temp)
	for i := start; i < len(nums); i++ {
		list = append(list, nums[i])
		tra(nums, i+1)
		list = list[:len(list)-1]
	}
}

617. 合并二叉树

  • 先序遍历,判断并更新结果
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {
	if root1 == nil && root2 != nil {
		return root2
	}
	if (root1 != nil && root2 == nil) || (root1 == nil && root2 == nil) {
		return root1
	}
	root1.Val += root2.Val
	root1.Left = mergeTrees(root1.Left, root2.Left)
	root1.Right = mergeTrees(root1.Right, root2.Right)
	return root1
}