实验题5.2 实现二叉树各种算法

【实验目的】

(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;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值