【题目】
【代码】
class Solution:
def preOrder(self,root,flag,depth):
if not root:
return
self.a_pre[flag].append(str(root.val)+str(depth))
self.preOrder(root.left,flag,depth+1)
self.preOrder(root.right,flag,depth+1)
def inOrder(self,root,flag,depth):
if not root:
return
self.inOrder(root.left,flag,depth+1)
self.b_in[flag].append(str(root.val)+str(depth))
self.inOrder(root.right,flag,depth+1)
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
self.a_pre=[[],[]]
self.b_in=[[],[]]
self.preOrder(p,0,0)
self.preOrder(q,1,0)
self.inOrder(p,0,0)
self.inOrder(q,1,0)
print(self.a_pre)
print(self.b_in)
return self.a_pre[0]==self.a_pre[1] and self.b_in[0]==self.b_in[1]
【简化版本】
class Solution:
def preOrder(self,root,flag,depth):
if not root:
return
self.a_pre[flag].append(str(root.val)+str(depth))
self.preOrder(root.left,flag,depth+1)
self.b_in[flag].append(str(root.val)+str(depth))
self.preOrder(root.right,flag,depth+1)
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
self.a_pre=[[],[]]
self.b_in=[[],[]]
self.preOrder(p,0,0)
self.preOrder(q,1,0)
return self.a_pre[0]==self.a_pre[1] and self.b_in[0]==self.b_in[1]
【广度优先】
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p or not q:
return p==q
ans=[[],[]]
loc=[[],[]]
def deal(flag):
depth=0
while queue_p:
sz=len(queue_p)
for i in range(sz):
node=queue_p.pop(0)
print(node.val)
ans[flag].append((node.val,depth))
if node.left:
queue_p.append(node.left)
loc[flag].append(0)
if node.right:
queue_p.append(node.right)
loc[flag].append(1)
depth+=1
queue_p=[p]
deal(0)
queue_p=[q]
deal(1)
return ans[0]==ans[1] and loc[0]==loc[1]
【方法4】
class Solution:
def preOrder(self,p,q):
if not p or not q:
return p is None and q is None
elif p.val!=q.val:
return False
return self.preOrder(p.left, q.left) and self.preOrder(p.right,q.right)
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
return self.preOrder(p,q)
【方法5】
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p or not q:
return not p and not q
elif p.val!=q.val:
return False
return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)