题目链接: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;
}
};