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
}
分类: 算法

站点统计

  • 文章总数:309 篇
  • 分类总数:19 个
  • 标签总数:191 个
  • 运行天数:1009 天
  • 访问总数:129079 人次

浙公网安备33011302000604

辽ICP备20003309号