1. 程式人生 > >劍指offer 面試26題

劍指offer 面試26題

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=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

劍指offer 面試26題