1.题目
leetcode:226
这个是真的???
2.代码与分析
这个也是模板题
只不过多了左右节点交换,有点类似反转字符串
左右节点交换,为空的话顶多nil 交换
2.1BFS
func invertTree(root *TreeNode) *TreeNode {
if root==nil{
return root
}
lis := list.New()
lis.PushBack(root)
for lis.Len()>0{
length := lis.Len()
for i:=0;i<length;i++{
node := lis.Remove(lis.Front()).(*TreeNode)
if node.Left!=nil{
lis.PushBack(node.Left)
}
if node.Right!=nil{
lis.PushBack(node.Right)
}
node.Left, node.Right = node.Right, node.Left
}
}
return root
}
2.2DFS后序遍历
func invertTree(root *TreeNode) *TreeNode{
if root==nil{
return root
}
invertTree(root.Left)
invertTree(root.Right)
root.Left, root.Right = root.Right, root.Left
return root
}