题目
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
解答
代码
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
if p==None and q==None:
return True
elif p!=None and q!=None:
if p.val==q.val:
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
else:
return False
else:
return False
思路
递归。
- 若两节点均为空:
即意味着节点相同,返回true - 若两节点均不为空,则进一步判断两者值是否相同:
- 值相同:
往子节点的位置判断,使用递归 - 值不同:
节点不相同,返回false
- 值相同:
- 若两节点一个为空一个不为空:
即意味着两节点不相同,返回false
结果