leetcode刷题之100.相同的树
-
题目:
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 -
示例 :
示例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
-
代码1:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p and not q:
return True
elif p is not None and q is not None:
if p.val == q.val:
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
return False
# 执行用时 : 44 ms, 在Same Tree的Python3提交中击败了96.18% 的用户
# 内存消耗 : 13 MB, 在Same Tree的Python3提交中击败了92.55% 的用户
- 算法说明:
判断p和q是否已到最后,如果到最后的话,说明两个二叉树一样,返回“真”,判断根节点是否一致,如果一致,递归调用《isSameTree》函数,继续判断左节点、右节点,直到程序终结。