用C语言设计一个算法判断两棵二叉树是否相等
时间: 2024-05-12 16:17:23 浏览: 98
判断两颗二叉树是否相似(C语言)
5星 · 资源好评率100%
好的,以下是用 C 语言设计一个算法判断两棵二叉树是否相等的步骤:
1. 如果两颗二叉树都是空树,则它们相等。
2. 如果两棵二叉树有一个为空而另一个不为空,则它们不相等。
3. 如果两棵二叉树的根节点值不相等,则它们不相等。
4. 分别递归判断两棵二叉树的左右子树是否相等,如果都相等,则这两棵二叉树相等。
下面是用 C 语言实现判断两颗二叉树是否相等的代码:
```
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
if (p == NULL && q == NULL) return true;
if (p == NULL || q == NULL) return false;
if (p->val != q->val) return false;
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
int main() {
struct TreeNode* p = (struct TreeNode*)malloc(sizeof(struct TreeNode));
p->val = 1;
p->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
p->left->val = 2;
p->left->left = NULL;
p->left->right = NULL;
p->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
p->right->val = 3;
p->right->left = NULL;
p->right->right = NULL;
struct TreeNode* q = (struct TreeNode*)malloc(sizeof(struct TreeNode));
q->val = 1;
q->left = (struct TreeNode*)malloc(sizeof(struct TreeNode));
q->left->val = 2;
q->left->left = NULL;
q->left->right = NULL;
q->right = (struct TreeNode*)malloc(sizeof(struct TreeNode));
q->right->val = 3;
q->right->left = NULL;
q->right->right = NULL;
if (isSameTree(p, q)) {
printf("Two binary trees are identical.\n");
} else {
printf("Two binary trees are not identical.\n");
}
return 0;
}
```
阅读全文