用c语言编程用递归方法实现二叉树的中序和后序遍历完整代码
时间: 2024-12-16 21:22:54 浏览: 18
在 C 语言中,递归是一种常用的遍历二叉树的方法。下面分别给出二叉树的中序(先根后右)和后序(根左右)遍历的递归实现。假设我们有一个结构体 `TreeNode` 定义了二叉树节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 中序遍历(先根后右)
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); // 左子树递归
printf("%d ", root->val); // 访问当前节点
inorderTraversal(root->right); // 右子树递归
}
}
// 后序遍历(根左右)
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left); // 左子树递归
postorderTraversal(root->right); // 右子树递归
printf("%d ", root->val); // 访问当前节点
}
}
```
注意,在实际应用中,为了防止函数栈溢出,通常需要加上终止条件。例如,在上述代码中,如果 `root` 指针为空,表示已经到达叶子节点或者遍历结束。
阅读全文