等价二叉树-lintcode

看两个二叉树形状和内容是否完全相等。可以递归求解,每一个调用栈内存储两个返回的bool结果:lflag和rflag。然后返回它们的与。同样,和通常的递归思想一样,调用栈开始就要做好递归结束的判断:a、b都为NULL返回true,一个为NULL另一个不为NULL返回false,val不相同返回false。

C++代码:

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @aaram a, b, the root of binary trees.
     * @return true if they are identical, or false.
     */
    bool isIdentical(TreeNode* a, TreeNode* b) {
        return search(a, b);
    }
    bool search(TreeNode * a, TreeNode * b){
        if (a == NULL && b == NULL) {
            return true;
        }
        if (a == NULL || b == NULL) {
            return false;
        }
        if (a->val != b->val) {
            return false;
        }
        bool lflag = search(a->left, b->left);
        bool rflag = search(a->right, b->right);
        return (lflag && rflag);
        
    }
};

Python代码:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        this.val = val
        this.left, this.right = None, None
"""
class Solution:
    """
    @param a, b, the root of binary trees.
    @return true if they are identical, or false.
    """
    def isIdentical(self, a, b):
        return self.search(a,b)
    def search(self,a,b):
        if a==None and b==None:
            return True
        if a==None or b==None:
            return False
        if a.val != b.val:
            return False
        a1 = self.search(a.left, b.left)
        a2 = self.search(a.right, b.right)
        return a1 and a2
        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值