劍指offer 面試26題


面試26題:

題目:樹的子結構

題:輸入兩棵二叉樹A和B,判斷B是不是A的子結構。

解題思路:遞歸,注意空指針的情況。

解題代碼:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        # write code here
        res=False
        if pRoot1 and pRoot2:
            if pRoot1.val==pRoot2.val:
                res=self.SubtreeCore(pRoot1,pRoot2)
            if not res:
                res=self.HasSubtree(pRoot1.left,pRoot2)
            if not res:
                res=self.HasSubtree(pRoot1.right,pRoot2)
        return res
    
    def SubtreeCore(self,pRoot1,pRoot2):
        if pRoot2==None:
            return True
        if pRoot1==None:
            return False
        if pRoot1.val!=pRoot2.val:
            return False
        return self.SubtreeCore(pRoot1.left,pRoot2.left) and self.SubtreeCore(pRoot1.right,pRoot2.right)

另外,如果樹節點的val值是double的時候,需要自定義一個equal函數,當num1和num2相差小於1e-07時即可認為是相等的,詳見劍指offer P151


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM