Leetcode : 100 Same Tree

题目如下:

100Same 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,否则接着往下判断。

在对两个节点的左右子节点分别递归地调用判断是否相等的函数,并做与运算,将得到的值返回,

从而能判断这两棵树是否相等。


结果如下:



猜你喜欢

转载自blog.csdn.net/qq_41794348/article/details/80286610