题目如下:
100. Same Tree
Given two binary trees, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical and the nodes have the same value.
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, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ if(p == None and q == None): return True elif ((p!=None and q == None)or(p==None and q != None)): return False elif(p.val!=q.val): return False return (self.isSameTree( p.left, q.left) and self.isSameTree( p.right, q.right))
分析如下:
将两棵树的根节点作为函数的输入。
先判断输入的两个节点是否为空,若为空则返回True,否则再接着判断。
若两个节点一个为空而另一个为非空,则返回False,否则接着往下判断。
在对两个节点的左右子节点分别递归地调用判断是否相等的函数,并做与运算,将得到的值返回,
从而能判断这两棵树是否相等。
结果如下: