第二次上机实验报告
作业题目1:
实现以下算法:
1.以二叉链表表示二叉树,根据输入建立一棵二叉树;
2.输出二叉树的先序遍历结果;
3.输出二叉树的中序遍历结果;
4.输出二叉树的后序遍历结果。
程序运行结果截图,需测试各种情况。写出测试过程中遇到的主要问题及所采用的解决措施。
运行结果截图:
主要问题:创建树和输入树时顺序不好控制
解决办法:按树形输入,如果没有数据则输入-1,来提示输入已经结束了
代码:
BiTree.h
#pragma once
#include"function.h"
typedef struct Tree {
int data; // 数据域
struct Tree* lchild; // 左子树指针
struct Tree* rchild; // 右子树指针
}Tree, * BiTree;
BiTree CreateBiTree();
void PreOrderTraverse(BiTree T);
void InOrderTraverse(BiTree T);
void PostOrderTraverse(BiTree T);
function.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
function.cpp
#include"BiTree.h"
BiTree CreateBiTree()
{
int data;
int temp;
BiTree T;
scanf("%d", &data);
temp = getchar(); // 必须吸收一个后面的空格
if (data == -1) { // 输入-1 代表此节点下子树不存数据,不继续递归创建
return NULL;
}
else {
T = (BiTree)malloc(sizeof(Tree));
T->data = data; //把当前输入的数据存入当前节点指针的数据域中
printf("请输入%d的左子树:(若无数据则输入-1)\n", data);
T->lchild