class Node(object):
def __init__(self, left, right, val):
self.left = left
self.right = right
self.val = val
# 把方法改成静态方法了 发现在做递归的时候,None不是实例,不能调用
@staticmethod
def is_same(self, node):
res = False
if self is None and node is None:
res = True
elif (self is None and node is not None) or (self is not None and node is None):
res = False
elif self.val == node.val:
res = Node.is_same(self.left, node.left) and Node.is_same(self.right, node.right)
return res
def test_is_same():
# 手动构建二叉树
d = Node(None, None, 4)
e = Node(None, None, 5)
f = Node(None, None, 6)
g = Node(None, None, 7)
c = Node(f, g, 3)
b = Node(d, e, 2)
a = Node(b, c, 1)
assert Node.is_same(a, a) is True
assert Node.is_same(a, b) is False
网友评论