【Leetcode】python - [100] Same Tree 個人解法筆記

整理 LeetCode #100 Same Tree — DFS 遞迴、檢查 val + 遞迴左右子樹。

題目出處

100. Same Tree

難度

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

Reference

使用 Hugo 建立
主題 StackJimmy 設計