用c语言设计算法,判断两个二叉树是否相同
时间: 2024-12-06 13:21:10 浏览: 18
写一算法,判断一棵二叉树是否是一棵二叉排序树。
在 C 语言中,我们可以使用递归的方式来设计一个算法来判断两个二叉树是否相同。这个过程通常涉及比较根节点、检查左右子树是否也对应相同以及两个子树都被空的情况。以下是一个简单的步骤:
1. 定义一个函数 `isSameTree` 接收两个二叉树作为参数,比如结构体 `TreeNode` 类型的指针。
2. 如果两个指针都为空,说明都是空树,返回 `true`。
3. 如果其中一个为空而另一个不为空,则返回 `false`,因为非空的树不可能与空树相等。
4. 比较当前节点值是否相等,如果相等继续递归遍历左子树和右子树。
5. 对两个子树分别调用 `isSameTree` 函数,如果它们都返回 `true`,则当前节点对应的部分相同,继续下一层;反之返回 `false`。
伪代码示例:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int isSameTree(TreeNode* root1, TreeNode* root2) {
if (root1 == NULL && root2 == NULL) {
return true; // 都为空,相同
} else if (root1 == NULL || root2 == NULL) {
return false; // 其中一个为空,不同
}
if (root1->val != root2->val) {
return false; // 节点值不同,不同
}
return isSameTree(root1->left, root2->left) && isSameTree(root1->right, root2->right); // 递归检查左右子树
}
```
阅读全文