码迷,mamicode.com
首页 > 其他好文 > 详细

100. 相同的树

时间:2019-08-18 23:38:22      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:one   tree node   bsp   总结   none   子节点   编写   iss   append   

<两棵树的操作技巧>

题目

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

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

示例 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. 相同的树

标签:one   tree node   bsp   总结   none   子节点   编写   iss   append   

原文地址:https://www.cnblogs.com/remly/p/11374515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!