100. Same Tree
- Total Accepted: 157606
- Total Submissions: 353631
- Difficulty: Easy
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
Code
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ return (p is None and q is None) or (p is not None and q is not None and p. val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right))
Idea
Recursion is easy to implement for this problem.
Code
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None from collections import deque class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ q1,q2 = deque([p]), deque([q]) while stk1 and stk2: n1, n2 = q1.popleft(), q2.popleft() if (n1 is None and n2 is not None) or \ (n1 is not None and n2 is None) or \ (n1 and n2 and n1.val != n2.val): return False if n1 and n2: q1.append(n1.left) q2.append(n2.left) q1.append(n1.right) q2.append(n2.right) return True
Idea
Traverse two trees in same manner. Here I implement a bfs traverse.
Reference: https://discuss.leetcode.com/topic/7513/my-non-recursive-method (The author uses pre-order dfs)