劍指offer 面試26題
阿新 • • 發佈:2018-06-19
init odi 判斷 指針 代碼 需要 core true roo
面試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=Falseif 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 resdef 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
劍指offer 面試26題