栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

求码神们援助 中序遍历非递归算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

求码神们援助 中序遍历非递归算法

设定二叉树采用二叉链表方式存储,利用栈的基本操作设计中序遍历非递归算法。

(1)编写二叉链表方式存储的二叉树建立函数;

(2)编写栈的基本操作函数;

(3)编写中序遍历二叉树的非递归函数,参考算法6.11c;

(4)要求程序通过一个主菜单进行控制,通过选择菜单项序号调用各功能函数。

#include 

#include 

#include 

#define Stack_Size 30

//二叉树的二叉链表结点结构定义(链式存储结构)

typedef struct BiNode {

    char data;

    struct BiNode *lchild, *rchild;

} BiNode, *BiTree;

//栈的数据结构

//栈元素类型

typedef struct {

    BiNode *stack[Stack_Size];    // 存储节点数组

    int top;                // 栈顶指针

} BStack, *Stack;

// 栈初始化

Stack InitStack();

// 判断栈是否为空

int StackEmpty(Stack S);

// 判断栈是否满

int StackFull(Stack S);

// 创建二叉树

void Create(BiTree *T);

// 进栈操作

void Push(Stack *S, BiNode *e);

// 出栈操作

BiNode* Pop(Stack *S);

// 取得栈顶元素

BiNode* GetTop(Stack S);

// 输出栈中元素的内容

void Visit(BiNode *root);

// 二叉树的中序遍历的非递归算法

void InTraverse(BiTree T);

// 菜单

int selectMenu();

Stack InitStack() {

}

int StackEmpty(Stack S) {

}

int StackFull(Stack S) {

}

void Create(BiTree *T) {

}

void Push(Stack *S, BiNode *e) {

}

BiNode* Pop(Stack *S) {

}

BiNode* GetTop(Stack S) {

}

// 输出栈中元素的内容

void Visit(BiNode *root) {

    if (root->data != '#')

        printf("%c ", root->data);

}

void InTraverse(BiTree T) {

}

// 菜单驱动程序

int selectMenu() {

    int sn;

    printf("-----------MENU---------n");       //显示菜单

    printf("=========================================n");

    printf("1.----二叉树的建立------n");

    printf("2.----中序遍历非递归算法--------n");

    printf("0.----退出程序----------n");

    printf("=========================================n");

    printf("请选择0--2:");

    //菜单功能选择

    for (;;) {

        scanf("%d", &sn);  //输入选项

        getchar();

        if (sn < 0 || sn > 2)

            printf("n 输入选择错误,请重新选择 0--2:");

        else

            break;

    }

    return sn;

}

int main()

{

    BiTree T;

    // 无限循环,选择0 退出

    for (;;) {

        switch (selectMenu())    // 调用菜单函数,按返回值选择功能函数

        {

        case 1:

            printf("n1.----二叉树的建立--------n");

            Create(&T);

            break;

        case 2:

            printf("n2.----中序遍历非递归算法--------n");

            InTraverse(T);

            printf("n");

            break;

        case 0:

            printf("n0.----退出程序------------n");

            return 0;

        } // switch语句结束

    } // for循环结束

} // main()函数结束

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号