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

判断两棵树是否相同

时间:2020-04-25 01:03:20      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:ble   style   color   bre   ==   info   null   nbsp   bool   

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

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

技术图片

 

 

链接:https://leetcode-cn.com/problems/same-tree

 

1.递归法

class Solution {
public:
    bool Judge(TreeNode* root1,TreeNode* root2)
    {
        if(root1==NULL&&root2==NULL) return true;
        else if(root1==NULL||root2==NULL) return false;
        if(root1->val!=root2->val) return false;
        return Judge(root1->left,root2->left)&&Judge(root1->right,root2->right);
        
    }
    bool isSameTree(TreeNode* p, TreeNode* q) {
        return Judge(p,q);
    }
};

2.非递归法

用队列存,然后逐个比较

class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        bool vis=1;
        if(p==NULL&&q==NULL) return true;
        else if(p==NULL||q==NULL) return false;
        queue<TreeNode*> a;
        queue<TreeNode*> b;
        a.push(p);
        b.push(q);
        while(!a.empty()&&!b.empty())
        {
            if(!vis) break;
            TreeNode* temp1=a.front();
            a.pop();
            TreeNode* temp2=b.front();
            b.pop();
            if(temp1->val!=temp2->val)//两个值不同就退出
            {
                vis=0;
                break;
            }
            else
            {
//逐个判断子节点格式,并放入
if(temp1->left!=NULL&&temp2->left!=NULL&&temp1->left->val==temp2->left->val) { a.push(temp1->left); b.push(temp2->left); } else if(temp1->left!=NULL||temp2->left!=NULL) { vis=0; break; } if(temp1->right!=NULL&&temp2->right!=NULL&&temp1->right->val==temp2->right->val) { a.push(temp1->right); b.push(temp2->right); } else if(temp1->right!=NULL||temp2->right!=NULL) { vis=0; break; } } } if(vis) return true; else return false; } };

 

2.队列非递归法

判断两棵树是否相同

标签:ble   style   color   bre   ==   info   null   nbsp   bool   

原文地址:https://www.cnblogs.com/Charls/p/12770994.html

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