cuilllinn 2022-03-28 22:22 采纳率: 100%
浏览 14
已结题

力扣 二叉树的镜像,不知道问题出在哪里

问题:
二叉树的镜像
我的代码-->不对,但是我没看出来哪里有误
例如:
[4,2,7,1,3,6,9],应输出[4,7,2,9,6,3,1]

class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        root2=TreeNode(root.val)
        self.copy(root,root2)
        return root2
    def copy(self,head,head2):
        if not head or not head2:
            return
        head2.right=head.left
        head2.left=head.right
        self.copy(head.left,head2.right)
        self.copy(head.right,head2.left)

此代码最终输出[4,7,2,6,6,1,1]
我觉得重复赋值了,但具体不知道什么时候发生的。于是改代码为:

class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        root2=TreeNode(root.val)
        self.copy(root,root2)
        return root2
    def copy(self,head,head2):
        if not head or not head2:
            return
        if not head2.right:
            head2.right=head.left
        if not head2.left:
            head2.left=head.right
        self.copy(head.left,head2.right)
        self.copy(head.right,head2.left)

输出[4,7,2,6,9,1,3]
还是不对的结果,求大家帮忙

  • 写回答

1条回答 默认 最新

  • zp_diandiandidi 2022-03-29 08:18
    关注

    交换不要直接赋值,要使用类似 int 型交换值的方式如:

    int a = 1, b = 2, tmp;
    
    tmp = a;
    a = b;
    b = tmp;
    

    给你一个我的答案:

    class Solution(object):
        def mirrorTree(self, root):
            """
            :type root: TreeNode
            :rtype: TreeNode
            """
            if not root:
                return None
            
            root.left = self.mirrorTree(root.left)
            root.right = self.mirrorTree(root.right)
            tmp = root.left
            root.left = root.right
            root.right = tmp
    
            return root
    

    望采纳,谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月28日

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容