Python 樹的子結構

輸入兩顆二叉樹A,B, 判斷B是不是A的子結構。約定空樹不是任何數的子結構

class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        if pRoot1 == None or pRoot2 == None:
            return False

        def hasEqual(pRoot1, pRoot2):
            if pRoot2 == None:
                return True
            if pRoot1 == None:
                return False
            if pRoot1.val == pRoot2.val:
                if pRoot2.left == None:
                    leftEqual = True
                else:
                    leftEqual = hasEqual(pRoot1.left, pRoot2.left)
                if pRoot2.right == None:
                    rightEqual = True
                else:
                    rightEqual = hasEqual(pRoot2.right, pRoot2.right)
                return leftEqual and rightEqual
            return False

        if pRoot1.val ==pRoot2.val:
            ret =hasEqual(pRoot1,pRoot2)
            if ret:
                return True


        ret = self.HasSubtree(pRoot1.left, pRoot2)
        if ret:
            return True

        ret = self.HasSubtree(pRoot1.right, pRoot2)
        return ret
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章