题目
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例1
输入:
1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
输出:
true
示例2
输入:
1 1
/ \
2 2
[1,2], [1,null,2]
输出:
false
示例3
输入:
1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
输出:
false
解法
递归遍历,比较
代码
#include <stdio.h>
#include <iostream>
using namespace std;
//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 isSameTree(TreeNode* p, TreeNode* q) {
if (p == nullptr&&q == nullptr) {
return true;
} else if (p == nullptr || q == nullptr) {
return false;
} else if (p->val != q->val) {
return false;
} else {
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
}
};
int main(){
TreeNode node1(2);
TreeNode node2(3);
TreeNode root1(2,&node1,&node2);
TreeNode node3(2);
TreeNode node4(3);
TreeNode root2(2,&node4,&node3);
Solution s;
cout<<s.isSameTree(&root1, &root2);
return 0;
}
今天也是爱zz的一天哦!