题目描述:
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.
思路:
遍历树的同时判断,注意考虑到所有情况就行。这里使用的迭代的先序遍历。。
代码(python):
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param p, a tree node
# @param q, a tree node
# @return a boolean
def isSameTree(self, p, q):
dfsp = []
dfsq = []
if p is None and q is None:
return True
if p is not None:
dfsp.append(p)
if q is not None:
dfsq.append(q)
while dfsp != [] and dfsq != []:
nodep = dfsp.pop()
nodeq = dfsq.pop()
if nodep.val != nodeq.val:
return False
if nodep.right is not None and nodeq.right is None:
return False
if nodep.right is None and nodeq.right is not None:
return False
if nodep.left is not None and nodeq.left is None:
return False
if nodep.left is None and nodeq.left is not None:
return False
if nodep.right is not None:
dfsp.append(nodep.right)
if nodep.left is not None:
dfsp.append(nodep.left)
if nodeq.right is not None:
dfsq.append(nodeq.right)
if nodeq.left is not None:
dfsq.append(nodeq.left)
if dfsp == [] and dfsq == []:
return True
else:
return False