【实验目的】
(1)加深对二叉树性质和各种存储结构的特点及适用范围广义表的理解;
(2)熟练掌握二叉树的遍历算法。
【实验要求】
(1)采用函数调用的方式完成;
(2)文件funp5-2tree.cpp的作用是完成二叉树的各种遍历操作;
(3)实验提交必须有完整正确的程序、注释的细化以及程序运行结果的截图。
【实验内容】
编写一个程序,实现以下二叉树各种遍历的递归算法:
(1)用括号表示法输入一棵二叉树,并创建二叉链bt
(2)求二叉树的高度
(3)求二叉树的叶子结点个数
(4)再以括号表示法或者凹入表示法输出该二叉树
(5)输出从每个叶子结点到根结点的路径
(6)输出三种遍历(先序,中序,后序)的结果。
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
#include<iostream>
using namespace std;
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node* lchild;
struct node* rchild;
} BTNode;
void CreateBTNode(BTNode*& b, char* str)
{
BTNode* St[MaxSize], * p = NULL;
int top = -1, k, j = 0;
char ch;
b = NULL;
ch = str[j];
while (ch != '\0')
{
switch (ch)
{
case '(':top++; St[top] = p; k = 1; break;
case ')':top--; break;
case ',':k = 2; break;
default:p = (BTNode*)malloc(sizeof(BTNode));
p->data = ch; p->lchild = p->rchild = NULL;