编写c语言程序判断树是否同构?其中同构是指给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则称两棵树是“同构”的,输出True,否则输出False。
时间: 2023-06-11 07:04:23 浏览: 97
好的,关于判断树是否同构的问题,可以使用递归的方式解决。具体步骤如下:
1. 判断两棵树的根节点是否相同,如果不同则返回 False。
2. 判断左子树是否同构,如果不是则返回 False。
3. 判断右子树是否同构,如果不是则返回 False。
4. 如果以上步骤都没有返回 False,则说明两棵树是同构的,返回 True。
具体的 C 语言程序如下所示:
```c
#include <stdio.h>
#include <stdbool.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
bool isIsomorphic(TreeNode* s, TreeNode* t) {
if (s == NULL && t == NULL) {
return true;
}
if (s == NULL || t == NULL) {
return false;
}
if (s->val != t->val) {
return false;
}
return (isIsomorphic(s->left, t->left) && isIsomorphic(s->right, t->right)) || (isIsomorphic(s->left, t->right) && isIsomorphic(s->right, t->left));
}
int main() {
// 构造两棵树
TreeNode* s = (TreeNode*)malloc(sizeof(TreeNode));
s->val = 1;
s->left = (TreeNode*)malloc(sizeof(TreeNode));
s->left->val = 2;
s->left->left = NULL;
s->left->right = NULL;
s->right = (TreeNode*)malloc(sizeof(TreeNode));
s->right->val = 3;
s->right->left = NULL;
s->right->right = NULL;
TreeNode* t = (TreeNode*)malloc(sizeof(TreeNode));
t->val = 1;
t->left = (TreeNode*)malloc(sizeof(TreeNode));
t->left->val = 3;
t->left->left = NULL;
t->left->right = NULL;
t->right = (TreeNode*)malloc(sizeof(TreeNode));
t->right->val = 2;
t->right->left = NULL;
t->right->right = NULL;
// 判断是否同构
bool isomorphic = isIsomorphic(s, t);
printf("%s\n", isomorphic ? "True" : "False");
return 0;
}
```
注:以上程序中,我们通过 malloc 函数动态分配了两棵树的节点,并以一颗右倾斜树和一颗左倾斜树为例进行了同构判断。
阅读全文
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20250102104920.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)