Invert Binary Tree
题目描述
翻转二叉树:
翻转一颗二叉树
解法
二叉树的定义为:
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
解法一:递归
时间复杂度:
O(n)
空间复杂度:
O(n)
func invertTree(root *TreeNode) *TreeNode {
if root == nil {
return nil
}
root.Left, root.Right = invertTree(root.Right), invertTree(root.Left)
return root
}
解法二:迭代
时间复杂度:
O(n)
空间复杂度:
O(n)
func invertTree(root *TreeNode) *TreeNode {
if root == nil {
return nil
}
queue := []*TreeNode{root}
for len(queue) > 0 {
node := queue[0]
queue = queue[1:]
node.Left, node.Right = node.Right, node.Left
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
return root
}
Last updated
Was this helpful?