C语言实现先序遍历清空二叉树
时间: 2024-10-13 18:12:11 浏览: 41
在C语言中,我们可以使用递归的方式实现先序遍历并同时清空二叉树。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 先序遍历函数,同时释放节点内存
void inorderTraversal(TreeNode** root) {
if (*root == NULL)
return;
// 遍历左子树
inorderTraversal(&(*root)->left);
// 清空当前节点及其子节点
free(*root);
*root = NULL;
// 遍历右子树
inorderTraversal(&(*root)->right);
}
int main() {
// 创建一个示例二叉树(假设已经存在)
TreeNode* tree = ...;
// 调用先序遍历清空二叉树
inorderTraversal(&tree);
printf("Tree is now empty.\n");
return 0;
}
```
在这个例子中,`inorderTraversal` 函数会从根节点开始,递归地访问每个节点,并在访问完后释放该节点。由于我们是在遍历时释放节点,所以整个过程会将所有节点逐个清除。
阅读全文