以二叉链表表示二叉树,建立一棵二叉树输出二叉树的后序遍历结果的c语言代码
时间: 2023-11-14 08:15:01 浏览: 57
下面是以二叉链表表示二叉树,建立一棵二叉树输出二叉树的后序遍历结果的C语言代码:
```C
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 递归建树函数,先序遍历的顺序输入
TreeNode* createTree()
{
TreeNode* node = NULL;
int value;
scanf("%d", &value);
if (value != -1) {
node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = value;
node->left = createTree();
node->right = createTree();
}
return node;
}
// 递归实现二叉树的后序遍历
void postorderTraversal(TreeNode* root)
{
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
}
int main()
{
TreeNode* root = NULL;
printf("以先序遍历的顺序输入二叉树节点的值,-1表示不存在:");
root = createTree();
printf("二叉树的后序遍历结果为:");
postorderTraversal(root);
printf("\n");
return 0;
}
```
以上C代码中,包含递归函数 createTree() 用来建立二叉树,以先序遍历的顺序输入二叉树节点的值,此代码中-1 表示此节点不存在;函数 postorderTraversal() 用来实现二叉树的后序遍历。main() 函数用来调用 createTree() 和 postorderTraversal() 函数,最终输出二叉树的后序遍历结果。