1.问题描述:
检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。
2.样例:
1 1
/ \ / \
2 2 and 2 2
/ /
4 4
就是两棵等价的二叉树。
1 1
/ \ / \
2 3 and 2 3
/ \
4 4
就不是等价的。
3.代码:
"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
this.val = val
this.left, this.right = None, None
"""
class Solution:
"""
@param: a: the root of binary tree a.
@param: b: the root of binary tree b.
@return: true if they are identical, or false.
"""
def isIdentical(self, a, b):
# write your code here
if a is None and b is None:
return True
elif a is None or b is None:
return False
elif a.val!=b.val:
return False
return self.isIdentical(a.left, b.left) and self.isIdentical(a.right, b.right)
分情况判断,利用递归的思想。递归会先写最简单的情况,然后递归。 当a和b都是None时,等价返回True;当a或b是空,只有1个空时,肯定返回False;最后再判断两个的val值是否相等。