Same Tree

题目描述:

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.


思路:

遍历树的同时判断,注意考虑到所有情况就行。这里使用的迭代的先序遍历。。


代码(python):

# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param p, a tree node
    # @param q, a tree node
    # @return a boolean
    def isSameTree(self, p, q):
        dfsp = []
        dfsq = []
        if p is None and q is None:
            return True
        if p is not None:
            dfsp.append(p)
        if q is not None:
            dfsq.append(q)
        while dfsp != [] and dfsq != []:
            nodep = dfsp.pop()
            nodeq = dfsq.pop()
            if nodep.val != nodeq.val:
                return False
            if nodep.right is not None and nodeq.right is None:
                return False
            if nodep.right is None and nodeq.right is not None:
                return False
            if nodep.left is not None and nodeq.left is None:
                return False
            if nodep.left is None and nodeq.left is not None:
                return False              
            if nodep.right is not None:
                dfsp.append(nodep.right)
            if nodep.left is not None:
                dfsp.append(nodep.left)
            if nodeq.right is not None:
                dfsq.append(nodeq.right)
            if nodeq.left is not None:
                dfsq.append(nodeq.left)                
        if dfsp == [] and dfsq == []:    
            return True
        else:
            return False


        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值