題目
給你兩棵二叉樹的根節(jié)點(diǎn) p 和 q ,編寫一個(gè)函數(shù)來檢驗(yàn)這兩棵樹是否相同。如果兩個(gè)樹在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。
例:
輸入:p = [1,2,3], q = [1,2,3]
輸出:true

方法:遞歸
同 101. 對稱二叉樹 思路相同,若要判斷兩棵二叉樹是否相同,那么需要判斷二兩二叉樹所有對應(yīng)位置的值是否相等
- 若兩棵樹對應(yīng)位置的結(jié)點(diǎn)不同時(shí)存在時(shí),兩棵樹一定不相同
- 若兩棵樹對應(yīng)位置的結(jié)點(diǎn)的值不相同時(shí),兩棵樹一定不相同
- 當(dāng)兩棵樹對應(yīng)位置的結(jié)點(diǎn)同時(shí)存在且值相等時(shí),則繼續(xù)判斷兩個(gè)結(jié)點(diǎn)的左右孩子是否同時(shí)存在且相等或均不存在
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def isSameTree(self, p, q):
if p == None and q != None:
return False
elif p != None and q == None:
return False
elif p == None and q == None:
return True
elif p.val != q.val:
return False
left = self.isSameTree(p.left, q.left)
right = self.isSameTree(p.right, q.right)
return left and right