数据结构二叉树的比较代码
时间: 2023-03-25 10:03:06 浏览: 59
以下是二叉树的比较代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
int isSameTree(TreeNode* p, TreeNode* q) {
if (p == NULL && q == NULL) {
return 1;
}
if (p == NULL || q == NULL) {
return ;
}
if (p->val != q->val) {
return ;
}
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
int main() {
// 构造两棵二叉树
TreeNode* p = (TreeNode*)malloc(sizeof(TreeNode));
p->val = 1;
p->left = (TreeNode*)malloc(sizeof(TreeNode));
p->left->val = 2;
p->left->left = NULL;
p->left->right = NULL;
p->right = (TreeNode*)malloc(sizeof(TreeNode));
p->right->val = 3;
p->right->left = NULL;
p->right->right = NULL;
TreeNode* q = (TreeNode*)malloc(sizeof(TreeNode));
q->val = 1;
q->left = (TreeNode*)malloc(sizeof(TreeNode));
q->left->val = 2;
q->left->left = NULL;
q->left->right = NULL;
q->right = (TreeNode*)malloc(sizeof(TreeNode));
q->right->val = 3;
q->right->left = NULL;
q->right->right = NULL;
// 比较两棵二叉树是否相同
if (isSameTree(p, q)) {
printf("两棵二叉树相同\n");
} else {
printf("两棵二叉树不相同\n");
}
// 释放内存
free(p->left);
free(p->right);
free(p);
free(q->left);
free(q->right);
free(q);
return ;
}
```
希望能够帮助到你!
相关推荐















