帮我用c语言写 用递归的方法实现以下算法。 (1)以二又链表表示二叉树,建立一棵二叉树; (2)输出二叉树的后序遍历结果;
时间: 2024-04-25 13:06:22 浏览: 62
好的,以下是用递归的方法实现建立二叉树和输出后序遍历的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点的定义
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树
TreeNode* createTree() {
TreeNode* root = NULL;
int val;
scanf("%d", &val);
if (val != -1) { // -1表示空结点
root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
}
return root;
}
// 后序遍历
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
int main() {
printf("请输入二叉树的前序遍历序列,空结点用-1表示:\n");
TreeNode* root = createTree();
printf("后序遍历结果为:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
代码思路:
1. 定义二叉树结点的结构体。
2. 定义 `createTree` 函数,通过递归的方式逐层建立二叉树,输入-1表示该结点为空。
3. 定义 `postorderTraversal` 函数,通过递归的方式遍历整棵二叉树的左子树、右子树和根结点,输出每个结点的值。
4. 在 `main` 函数中调用 `createTree` 函数建立二叉树,再调用 `postorderTraversal` 函数输出后序遍历结果。
希望对你有所帮助!
阅读全文