算法课第十八周Same Tree

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.

解题思路:
给定两个树,判断这两个树是不是一模一样的树。
分析树的结构,用分治的思想,先判断val是否一样,再判断两个左边部分和两个右边部分是否一样。

先判断TreeNode是否是NULL,如果不是,将左边部分和右边部分视为另外的树,采用迭代的方法,再次判断val和比较左右两部分。如果两个左边的TreeNode是空,则判断右边的树是否一样即可,反之亦然。

    class Solution {  
    public:  
        bool isSameTree(TreeNode* p, TreeNode* q) {  
            if(p == NULL && q == NULL)  
                return true;  
            else if (p == NULL || q == NULL)  
                return false;  

            if(p->left == NULL && p->right == NULL && q->left == NULL && q->right == NULL)  
            {  
                if(p->val == q->val)  
                    return true;  
                else  
                    return false;  
            }  
            else if (p->val == q->val && p->left == NULL && p->right != NULL && q->left == NULL && q->right != NULL)  
            {  
                return isSameTree(p->right, q->right);  
            }  
            else if (p->val == q->val && p->left != NULL && p->right == NULL && q->left != NULL && q->right == NULL)  
            {  
                return isSameTree(p->left, q->left);  
            }  
            else if (p->val == q->val && p->left != NULL && p->right != NULL && q->left != NULL && q->right != NULL)  
            {  
                return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));  
            }  
            else  
                return false;  
        }  
    };  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值