[LeetCode]100. Same Tree
100. Same Tree
DFS
递归
class Solution(object):
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
if not p and not q:
return True
elif p and q:
return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
else:
return False
迭代
class Solution(object):
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
if not p and not q:
return True
elif not p or not q:
return False
stack = [(p, q)]
while stack:
node = stack.pop()
if node[0].val == node[1].val:
if node[0].left and node[1].left:
stack.append((node[0].left, node[1].left))
elif (not node[0].left and node[1].left) or (node[0].left and not node[1].left):
return False
if node[0].right and node[1].right:
stack.append((node[0].right, node[1].right))
elif (not node[0].right and node[1].right) or (node[0].right and not node[1].right):
return False
else:
return False
return True
![](https://i.loli.net/2018/11/17/5beff4d639cbb.jpg)
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法