題目出處
難度
easy
個人範例程式碼
# Definition for a binary tree node.
# 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: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
return self.dfs(p, q)
def dfs(self, p, q):
# end of recursion
if not p and not q:
return True
if not p or not q:
return False
# define
if p.val == q.val: # True
# split
return self.dfs(p.left, q.left) and self.dfs(p.right, q.right)
else:
return False
最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解
算法說明
基本的 Tree traverse 變形,用 dfs 實作。
input handling
一同在 dfs 內部處理
Boundary conditions
dfs 結束條件
正確結束:
- if not p and not q, return True
錯誤情況:
- not p 但還有 q,或相反,return False
- p.val 不等於 q.val,return False