100.Same_Tree

25 年 7 月 2 日 星期三
268 字
2 分钟

100. Same Tree

python
# 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:
        if p is None or q is None:
            if p is None and q is None:
                return True
            else:
                return False
        return p.val == q.val and self.isSameTree(p.left, q.left) and \ self.isSameTree(p.right, q.right)

can be simplified as

python
class Solution:
    def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
        if p is None or q is None:
            return p is q  # 必须都是 None
        return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

作者:灵茶山艾府
链接:https://leetcode.cn/problems/same-tree/solutions/2015056/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-empk/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

The point is return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

对于递归而言,只需要考虑base cases 和 中间的m+1逻辑就行了,正如数学归纳法(mathematical induction)只要考虑n=1时成立和 n = m => n = m + 1 时成立就行。对这里而言,只要左右子树当前节点的value相等,并且左子树相等,并且右子树相等,就能得出两个树相等。

文章标题:100.Same_Tree

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/100same_tree[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。