Leetcode 100 相同的樹
阿新 • • 發佈:2020-11-16
100. 相同的樹
Difficulty: 簡單
給定兩個二叉樹,編寫一個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
示例1:
輸入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
輸出: true
示例 2:
輸入: 1 1 / \ 2 2 [1,2], [1,null,2] 輸出: false
示例3:
輸入: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
輸出: false
Solution
Language: 全部題目
# 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: TreeNode, q: TreeNode) -> bool: # 先序遍歷和後序遍歷可以唯一確定一顆二叉樹 return preOrderTraversal(p) == preOrderTraversal(q) and inOrderTraversal(p) == inOrderTraversal(q) def preOrderTraversal(tree): if not tree: # 注意為null的節點要向棧中新增"" return [""] else: d = [""] if not tree.val else [tree.val] l = preOrderTraversal(tree.left) r = preOrderTraversal(tree.right) return d + l + r def inOrderTraversal(tree): if not tree: return [""] else: l = inOrderTraversal(tree.left) d = [""] if not tree.val else [tree.val] r = inOrderTraversal(tree.right) return l + d + r