zoukankan      html  css  js  c++  java
  • 【LeetCode】面试题27. 二叉树的镜像

    题目:

    思路:

    1、很明显递归处理,交换当前节点的左右子树,然后递归处理其左子树和右子树
    2、也可以通过栈深度优先的去交换,或者通过队列广度优先的去交换(一层层的交换)

    代码:

    Python

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def mirrorTree(self, root):
            """
            :type root: TreeNode
            :rtype: TreeNode
            """
            if root is None:
                return None
            # # result = root不行, 执行到root.left时root.left=result.left=root.right
            # result = TreeNode(root.val)
            # result.left = self.mirrorTree(root.right)
            # result.right = self.mirrorTree(root.left)
            # return result
    
            root.left, root.right = self.mirrorTree(root.right), self.mirrorTree(root.left)
            return root
    
    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def mirrorTree(self, root):
            """
            :type root: TreeNode
            :rtype: TreeNode
            """
            if root is None:
                return None
            # 通过队列实现
            queue = [root]
            while queue:
                node = queue.pop()
                if node.left: queue.append(node.left)
                if node.right: queue.append(node.right)
                node.left, node.right = node.right, node.left
            return root
    

    相关问题

  • 相关阅读:
    腾讯2016年实习生笔试题-蛇形数组-循环枚举遍历
    直接插入排序的加强版
    scanner 在java中的输入
    一种排序
    将string str中的str转换成字符数组
    呜呜呜
    ansible-playbook 实战案例 全网备份 实时备份
    Rsync服务实战
    TCP三次握手与四次握手
    centos 6.9修改系统默认字符集
  • 原文地址:https://www.cnblogs.com/cling-cling/p/13039308.html
Copyright © 2011-2022 走看看