学习算法的一天
今天是入门级算法: 判断两个二叉树是否相等:
描述
给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。 判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
解法
分情况讨论,递归遍历整个二叉树,如果两个树的节点不相同就退出递归,python实现。
import re
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
#
#
# @param p TreeNode类
# @param q TreeNode类
# @return bool布尔型
#
class Solution:
def isSameTree(self , p , q ):
# write code here
#情况一:两个节点都为空,视为相同
if not p and not q:
return True
#情况二:两个节点有一个为空,视为不相同
if not p or not q:
return False
#情况三:两个节点值不相同
if p.val != q.val:
return False
return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)