判定两棵二叉树是否相似 c语言
时间: 2024-10-13 18:12:26 浏览: 33
c代码-判断树的同构
在C语言中,判断两棵二叉树是否相似通常是通过递归的方式来实现的,这被称为“深度优先遍历”(Depth-First Search, DFS)。这里有一个基本思路:
1. **结构体定义**:首先定义二叉树节点的数据结构,包含值和左右子节点指针。
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
2. **辅助函数**:创建两个用于比较的递归函数,`isIdentical`检查当前节点及其子树是否相等。
```c
int isIdentical(TreeNode* node1, TreeNode* node2) {
if (!node1 && !node2) // 如果两个节点都为空,则它们相同
return 1;
else if ((!node1) || (!node2)) // 如果其中一个节点为空,而另一个不空,则不相同
return 0;
else // 否则,只有当值、左子树和右子树都相等时才相同
return (node1->val == node2->val) && isIdentical(node1->left, node2->left) && isIdentical(node1->right, node2->right);
}
```
3. **主函数**:在主程序中,传递根节点给这个辅助函数并返回结果。
```c
int areTreesIdentical(TreeNode* tree1, TreeNode* tree2) {
return isIdentical(tree1, tree2);
}
```
阅读全文