获,成长。
废话不多说,又遇到二叉树相关的题,题目虽简单,但用到些经典思路,所以记录下:
判断两个二叉树是否相等
class Node():
def __init__(self,val,left=None,right=None):
self.val = val
self.left = left
self.right = right
def IsSame(self, node):
#以上为题干部分, 下面采用先根序遍历(复杂度O(n)=2n)的方法来实现:
p, q = self, node
S0 = [] #栈0
S1 = [] #栈1
while (p and q) or len(S0):
if p and q:
if p.val != q.val:
return False
S0.append(p.right) #存右置左
p = p.left
S1.append(q.right)
q = q.left
p = S0.pop()
q = S1.pop()
if (p and (not q))or((not p)and q): #有一个不为None
return False</