- Same Tree
Example 1:
Input: 1 1
------- / \ / \
*****2 3 2 3
[1,2,3], [1,2,3]
Output: true
Example 2:
Input: 1 ***1
------- / \ ** / \
******2 ***** 2
[1,2], [1,null,2]
Output: false
Example 3:
Input: 1 ***1
--------/ \ * / \
******2 1 1 2
[1,2,1], [1,1,2]
Output: false
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#递归
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p or not q:
return p==q
return p.val==q.val and isSameTree(p.left,q.left) and isSameTree(p.right,q.right)
#迭代
class Solution:
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
stack = [(p, q)]
while stack:
node1, node2 = stack.pop()
if not node1 and not node2:
continue
elif None in [node1, node2]:
return False
else:
if node1.val != node2.val:
return False
stack.append((node1.right, node2.right))
stack.append((node1.left, node2.left))
return True