1.建立一棵用二叉链表方式存储的二叉树,并实现对其进行先序、中序、后序三种方法遍历,输出遍历结果。编写代码
时间: 2024-03-09 22:49:09 浏览: 50
好的,以下是一棵二叉树的结构体定义及遍历实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 先序遍历
void preorder(TreeNode *root) {
if (root == NULL) {
return;
}
printf("%d ", root->data);
preorder(root->left);
preorder(root->right);
}
// 中序遍历
void inorder(TreeNode *root) {
if (root == NULL) {
return;
}
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
// 后序遍历
void postorder(TreeNode *root) {
if (root == NULL) {
return;
}
postorder(root->left);
postorder(root->right);
printf("%d ", root->data);
}
// 创建二叉树(手动输入)
TreeNode *createBinaryTree() {
int val;
printf("请输入节点的值,-1代表空节点:");
scanf("%d", &val);
if (val == -1) {
return NULL;
}
TreeNode *node = (TreeNode *) malloc(sizeof(TreeNode));
node->data = val;
printf("请输入%d的左子节点:", val);
node->left = createBinaryTree();
printf("请输入%d的右子节点:", val);
node->right = createBinaryTree();
return node;
}
int main() {
TreeNode *root = createBinaryTree();
printf("先序遍历结果:");
preorder(root);
printf("\n中序遍历结果:");
inorder(root);
printf("\n后序遍历结果:");
postorder(root);
printf("\n");
return 0;
}
```
运行程序后,按照提示输入每个节点的值及其左右子节点,即可创建一个二叉树。然后,程序会依次输出先序遍历、中序遍历和后序遍历的结果。
阅读全文