C语言实现:判断两棵二叉树T和T’是否相似(两棵二叉树相似是指它们具有相同结构)
时间: 2024-12-06 21:25:27 浏览: 28
在C语言中,判断两个二叉树是否相似(拥有相同的结构),通常我们会递归地比较每个节点的左右子树,如果它们都是空或者是两个相同的非空节点,那么这两个子树就是相似的。以下是一个基本的实现:
```c
#include <stdbool.h>
#include <stdio.h>
// 二叉树结点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 判断两个二叉树是否相似
bool isSameTree(TreeNode* t, TreeNode* t') {
if (!t && !t') return true; // 都为空,认为是相似的
if (!t || !t') return false; // 只有一个为空,不相似
return t->val == t'->val &&
isSameTree(t->left, t'->left) &&
isSameTree(t->right, t'->right);
}
int main() {
TreeNode *tree1 = ...; // 你的第一个二叉树
TreeNode *tree2 = ...; // 第二个二叉树
if (isSameTree(tree1, tree2)) {
printf("Two trees are similar.\n");
} else {
printf("Trees are not similar.\n");
}
return 0;
}
```
在这个函数中,我们首先检查根节点的值是否相等,然后递归地检查左子树和右子树是否也是相似的。
阅读全文