100. 相同的树

Posted remly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100. 相同的树相关的知识,希望对你有一定的参考价值。

<两棵树的操作技巧>

题目

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入:       1         1
          / \       /          2   3     2   3

        [1,2,3],   [1,2,3]

输出: true

示例 2:

输入:      1          1
          /                    2             2

        [1,2],     [1,null,2]

输出: false

示例 3:

输入:       1         1
          / \       /          2   1     1   2

        [1,2,1],   [1,1,2]

输出: false

 

我的思路

 

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
‘‘‘
1.用一个栈来操作两棵树
2.每次入栈同时压入两棵树的节点
3.每次去除同时取出两棵树的节点,这样和操作一棵树是一样的。
‘‘‘
class Solution(object):
    def isSameTree(self, p, q):
        """
        :type p: TreeNode
        :type q: TreeNode
        :rtype: bool
        """
        if p is None and q is None:return True
        if p is None and q: return False
        if p and q is None :return False
        que = []
        que.append(p)
        que.append(q)
        while que:
            nodep = que.pop(0)
            nodeq = que.pop(0)
            #当前节点一定是存在的,只需要对比值是否相同就行
            if nodep.val!=nodeq.val:return False
                        
            #先是p,q的左子节点存在->入栈
            #(不管值对不对,这里只关心两棵树的子节点是否都存在,值的正确与否交给上一行代码)
            #然后列出两棵树的子节点不一致的情况(笨办法,全列出来了。。。因为有可能遇到叶子节点)           
            if nodep.left and nodeq.left:
                que.append(nodep.left)
                que.append(nodeq.left)
            elif nodep.left and nodeq.left is None:return False
            elif nodep.left is None and nodeq.left:return False
            if nodep.right and nodeq.right:
                que.append(nodep.right)
                que.append(nodeq.right)
            elif nodep.right and nodeq.right is None:return False
            elif nodep.right is None and nodeq.right : return False
        #全部没问题,返回True
        return True
            

 

我的实现

 

题解

总结

以上是关于100. 相同的树的主要内容,如果未能解决你的问题,请参考以下文章

100. 相同的树

100. 相同的树

100. 相同的树

LeetCode 100 相同的树

100. 相同的树

100. 相同的树