c语言在键盘上输入两棵二叉树并判断是否相等
时间: 2024-02-24 10:00:24 浏览: 65
以下是C语言代码,用于从键盘上输入两棵二叉树,并判断它们是否相等:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建二叉树,返回根节点指针
struct TreeNode* createTree() {
int val;
scanf("%d", &val);
if (val == -1) {
return NULL;
}
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = createTree();
node->right = createTree();
return node;
}
// 判断两棵二叉树是否相等
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
// 如果两棵树都为空,则相等
if (p == NULL && q == NULL) {
return true;
}
// 如果只有一棵树为空,则不相等
else if (p == NULL || q == NULL) {
return false;
}
// 如果根节点的值不相等,则不相等
else if (p->val != q->val) {
return false;
}
// 递归判断左右子树是否相等
else {
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
}
int main() {
// 创建第一棵树
printf("请输入第一棵树的节点值,-1表示空节点:\n");
struct TreeNode* tree1 = createTree();
// 创建第二棵树
printf("请输入第二棵树的节点值,-1表示空节点:\n");
struct TreeNode* tree2 = createTree();
// 判断两棵树是否相等
bool sameTree = isSameTree(tree1, tree2);
if (sameTree) {
printf("两棵树相等\n");
} else {
printf("两棵树不相等\n");
}
return 0;
}
```
该代码通过`createTree`函数从键盘上输入两棵二叉树,分别是`tree1`和`tree2`。然后,通过`isSameTree`函数判断这两棵树是否相等。在主函数中打印判断结果。
阅读全文