从键盘上输入一组数据,建立一个以二叉链表形式存储的二叉树。对所建立的二叉树分别进行先序、中序和后序遍历,并输出结果。并用c语言输出程序代码
时间: 2024-03-25 14:40:00 浏览: 61
以下是用C语言实现输入数据建立二叉树和三种遍历方式的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int data;
struct TreeNode* leftChild;
struct TreeNode* rightChild;
} TreeNode;
// 先序遍历
void preOrder(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data);
preOrder(root->leftChild);
preOrder(root->rightChild);
}
}
// 中序遍历
void inOrder(TreeNode* root) {
if (root != NULL) {
inOrder(root->leftChild);
printf("%d ", root->data);
inOrder(root->rightChild);
}
}
// 后序遍历
void postOrder(TreeNode* root) {
if (root != NULL) {
postOrder(root->leftChild);
postOrder(root->rightChild);
printf("%d ", root->data);
}
}
// 从键盘输入一组数据,建立二叉树
TreeNode* createBinaryTree() {
int data;
scanf("%d", &data);
if (data == -1) { // -1表示该节点为空
return NULL;
}
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->data = data;
root->leftChild = createBinaryTree();
root->rightChild = createBinaryTree();
return root;
}
int main() {
printf("请输入一组数据,以-1表示空节点:\n");
TreeNode* root = createBinaryTree();
printf("先序遍历结果为:");
preOrder(root);
printf("\n中序遍历结果为:");
inOrder(root);
printf("\n后序遍历结果为:");
postOrder(root);
printf("\n");
return 0;
}
```
使用方法:在命令行中运行编译后的可执行文件,按照要求输入一组数据,以-1表示空节点,程序将会输出先序、中序和后序遍历的结果。
阅读全文