问题:
二叉树的镜像
我的代码-->不对,但是我没看出来哪里有误
例如:
[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]
还是不对的结果,求大家帮忙
交换不要直接赋值,要使用类似 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
望采纳,谢谢。