1. 程式人生 > >產生樹的映象,判斷一棵樹是否為對稱二叉樹

產生樹的映象,判斷一棵樹是否為對稱二叉樹

程式碼均為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)