C语言应用二叉树的遍历操作来实现判断两棵二叉树是否相等的操作
时间: 2023-10-09 08:11:15 浏览: 110
判断两棵二叉树是否相等,需要对这两棵二叉树进行遍历操作,比较它们的各个节点的值是否相等。
具体实现可以按照以下步骤:
1. 定义二叉树节点结构体,包括节点值和左右子节点指针。
```
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
```
2. 实现二叉树的遍历函数,这里以前序遍历为例。
```
void preorderTraversal(struct TreeNode* root, int* arr, int* size) {
if (root == NULL) {
arr[(*size)++] = -1; // 用-1表示空节点
return;
}
arr[(*size)++] = root->val;
preorderTraversal(root->left, arr, size);
preorderTraversal(root->right, arr, size);
}
```
3. 实现判断两棵二叉树是否相等的函数。
```
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
int arr1[1000], arr2[1000], size1 = 0, size2 = 0;
preorderTraversal(p, arr1, &size1); // 遍历第一棵二叉树
preorderTraversal(q, arr2, &size2); // 遍历第二棵二叉树
if (size1 != size2) return false; // 如果节点个数不相等,直接返回false
for (int i = 0; i < size1; i++) {
if (arr1[i] != arr2[i]) return false; // 如果对应节点的值不相等,直接返回false
}
return true;
}
```
这样,就可以用C语言应用二叉树的遍历操作来实现判断两棵二叉树是否相等的操作了。
阅读全文