代码均为Python:
1. 产生树的镜像:
class Solution:
def Mirror(self,root):
if(root):
root.left,root.right = root.right,root.left
self.Mirror(root.left)
self.Mirror(root.right)
原理就是递归地交换每个结点的左右子结点。
2. 判断是否为二叉树:如果一棵树与他的镜像相同,则为对称二叉树。
class Solution:
def isSymmetrical(self, pRoot):
return self.isEqual(pRoot,pRoot)
def isEqual(self,tree1,tree2): #将入口的根节点拓展为两个根节点的比较
if(tree1==None and tree2==None):
return True
elif(tree1==None or tree2==None): #若两个根一个为None另外一个不是None,则返回False
return False
if(tree1.val!=tree2.val):
return False
else:
return self.isEqual(tree1.left,tree2.right) and self.isEqual(tree1.right,tree2.left)