LeetCode 剑指 Offer 27. 二叉树的镜像

思路: 递归遍历二叉树,左右子树交叉赋值。

树的定义


 public class TreeNode {
          public var val: Int
          public var left: TreeNode?
          public var right: TreeNode?
          public init(_ val: Int) {
              self.val = val
              self.left = nil
              self.right = nil
          }
      }

测试数据

        let root: TreeNode = TreeNode(4)
        let root1: TreeNode = TreeNode(2)
        let root2: TreeNode = TreeNode(7)
        root.left = root1
        root.right = root2
        let root3: TreeNode = TreeNode(1)
        let root4: TreeNode = TreeNode(3)
        root1.left = root3
        root1.right = root4
        let root5: TreeNode = TreeNode(6)
        let root6: TreeNode = TreeNode(7)
        root2.left = root5
        root2.right = root6
        print(self.mirrorTree(root) as Any)

调用部分


func mirrorTree(_ root: TreeNode?) -> TreeNode? {

            if(root == nil)
            {
                return nil
            }
          let endRoot : TreeNode = TreeNode(root?.val ?? 0);
                    
            if root?.left != nil {
                endRoot.right = self.mirrorTree(root?.left)
            }
            if (root?.right != nil)
            {
                endRoot.left = self.mirrorTree(root?.right)
            }
            return   endRoot
        
    }




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容