C++LeetCode 每日一题 - 相同的树

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

Description

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

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

Sample

在这里插入图片描述

Solution

暴力,直接递归求解,只要遇到一个不匹配的,就结束匹配,返回。

Code
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool ans=1; 
    void ff(TreeNode*& p, TreeNode*& q){
        if(p==NULL||q==NULL){//一个为空,一个不为空,则不匹配
            if(p) ans=0;
            if(q) ans=0;
            return;//返回
        }
        if(!ans) return ; //已存在不匹配,返回
        if(p->val==q->val) ans=1;
        else ans=0;
        ff(p->left,q->left);
        ff(p->right,q->right);
    }
    bool isSameTree(TreeNode* p, TreeNode* q) {
       ff(p,q);
       return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/buibuilili/article/details/107854178