invert_binary_tree
invert_binary_tree.go 源码
package main
//翻转二叉树
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
//很典型的递归,交换根节点的左右子节点的指针
//然后左右子树分别再进行同样的操作
func invertTree(root *TreeNode) *TreeNode {
if root != nil {
root.Left, root.Right = root.Right, root.Left
invertTree(root.Left)
invertTree(root.Right)
}
return root
}
//迭代,广度优先搜索
func invertTree2(root *TreeNode) *TreeNode {
if root == nil {
return root
}
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
}
你可能感兴趣的文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦