1. 程式人生 > 實用技巧 >100相同的樹

100相同的樹

class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 這道題還是比較容易的,直接使用遞迴的方法就可以解決。
# 兩個二叉樹同時進行遞迴,判斷每一次的節點是否相同就好了。
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
return self.dfs(p,q)
def dfs(self,root1,root2):
# 注意這裡有四種情況要分別進行判斷,因為root1或者root2中其中有一個為空的話,
# 就一定是不同的二叉樹,同時為空或者同時不為空才需要進行接下來的判斷。
if not root1 and root2:
return False
elif not root2 and root1:
return False
elif not root1 and not root2:
return True
# 這是兩個節點都不為空的情況,接著判斷
else:
# 首先判斷兩個節點的值是否相同。
if root1.val == root2.val:
# 然後遞迴判斷當前節點的左兒子和右兒子
return self.dfs(root1.left,root2.left) and self.dfs(root1.right,root2.right)
else:
return False