[leetcode:python]100.Same Tree

来源:互联网 发布:移动上网数据 编辑:程序博客网 时间:2024/06/07 03:52

题目:
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。

方法一: 性能59ms

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def isSameTree(self, p, q):        """        :type p: TreeNode        :type q: TreeNode        :rtype: bool        """        if p == None and q == None:            return True        if p and q and p.val == q.val:            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)        else:            return False

方法二:性能38ms

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def isSameTree(self, p, q):        """        :type p: TreeNode        :type q: TreeNode        :rtype: bool        """        if p == None and q == None:            return True        if p and q and p.val == q.val:            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)        return False

这两个方法的唯一区别就是最后那个return False的位置,造成的性能差异还是有点大的。。。值得注意。

方法三:性能32ms

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def isSameTree(self, p, q):        """        :type p: TreeNode        :type q: TreeNode        :rtype: bool        """        if p and q:           return (p.val==q.val) and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)        elif p==q:            return True        else:            return False
0 0
原创粉丝点击