利用二叉链表方法编程实现建立二叉树,按照二叉树的先序遍历算法逆序显示遍历访问的次序。C语言代码
时间: 2023-11-22 19:55:34 浏览: 103
下面是二叉链表建立二叉树并按照先序遍历逆序显示的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 先序遍历逆序显示函数
void reverse_preorder(TreeNode *root) {
if (root == NULL) {
return;
}
// 先访问当前结点
printf("%d ", root->data);
// 递归遍历右子树
reverse_preorder(root->right);
// 递归遍历左子树
reverse_preorder(root->left);
}
// 建立二叉树函数
TreeNode* create_tree() {
int val;
scanf("%d", &val);
if (val == -1) { // 输入-1表示空结点
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = val;
root->left = create_tree();
root->right = create_tree();
return root;
}
int main() {
TreeNode *root = create_tree();
printf("先序遍历逆序显示:");
reverse_preorder(root);
printf("\n");
return 0;
}
```
在该程序中,我们利用了二叉链表的方法建立了一棵二叉树,并定义了一个先序遍历逆序显示函数 `reverse_preorder()`。该函数先访问当前结点、再递归遍历右子树、最后递归遍历左子树,实现了先序遍历算法的逆序输出。最后在 `main()` 函数中调用 `create_tree()` 建立二叉树,再调用 `reverse_preorder()` 函数输出先序遍历逆序显示的结果。
阅读全文