、用递归的方法实现以下算法。 使用C语言(1)以二叉链表表示二叉树,建立一棵二叉树; (2)输出二叉树的后序遍历结果
时间: 2024-01-23 16:42:53 浏览: 125
C语言实现二叉树的前序、中序、后续遍历(递归法)
以下是用递归方法实现建立二叉树和输出后序遍历的C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
// 二叉树结点的定义
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 递归建立二叉树
TreeNode* createBinaryTree() {
int val;
scanf("%d", &val);
// 如果输入的值是-1,则表示没有子节点
if (val == -1) {
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = val;
root->left = createBinaryTree();
root->right = createBinaryTree();
return root;
}
// 递归后序遍历二叉树
void postorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
int main() {
// 创建二叉树
printf("请输入二叉树的前序遍历结果,-1表示空节点:\n");
TreeNode* root = createBinaryTree();
// 输出后序遍历结果
printf("二叉树的后序遍历结果为:\n");
postorderTraversal(root);
printf("\n");
return 0;
}
```
使用示例:
输入:
```
1 2 -1 -1 3 4 -1 -1 5 -1 -1
```
输出:
```
二叉树的后序遍历结果为:
2 5 4 3 1
```
阅读全文