二叉树的创建与遍历

一、实验目的:

1、熟悉二叉树结点的结构和对二叉树的基本操作;

2、掌握对二叉树每一种操作的具体实现;

3、学会递归方法和非递归方法实现二叉树的运算某重操作。

二、实验内容:

1、建立一棵二叉树。

2、用递归算法对二叉树进行先序、中序和后序遍历。

3、用非递归算法对二叉树进行先序、中序和后序遍历。

三、实验要求:

编写实现二叉树建立和遍历的基本算法的函数,并在此基础上设计一个主程序完成如下功能:

⑴定义二叉树的二叉链表存储结构;

⑵以扩展先序遍历序列建立二叉树的二叉链表;

⑶用递归算法分别实现二叉树的先序、中序和后续遍历,并打印输出;

⑷用非递归算法分别实现二叉树的先序、中序和后续遍历,并打印输出;

⑸计算二叉树的高度;

⑹计算二叉树叶子节点的个数。

四、实验步骤:

#include

#include<stdlib.h>

#include

#include

using namespace std;

typedef char ElemType;

//二叉树的二叉链表结构,也就是二叉树的存储结构,1个数据域,2个指针域(分别指向左右孩子)

typedef struct BiTNode

{

ElemType data;

struct BiTNode *lchild, *rchild;

}BiTNode, *BiTree;

//二叉树的建立,按前序遍历的方式建立二叉树

void CreateBiTree(BiTree *T)

{

ElemType ch;

cin >> ch;

if (ch == '#')

    *T = NULL;  //保证是叶结点

else

{

    *T = (BiTree)malloc(sizeof(BiTNode));

    //if (!*T)

    //exit(OVERFLOW); //内存分配失败则退出。

    (*T)->data

= ch;//生成结点

    CreateBiTree(&(*T)->lchild);//构造左子树

    CreateBiTree(&(*T)->rchild);//构造右子树

}

}

//表示对遍历到的结点数据进行的处理操作,此处操作是将树结点前序遍历输出

void operation1(ElemType ch)

{

cout << ch

<< " ";

}

//此处在输出的基础上,并输出层数

void operation2(ElemType ch, int level)

{

cout << ch

<< “在第” << level << “层” << " ";

}

//递归方式前序遍历二叉树

void PreOrderTraverse(BiTree T, int level)

{

if (T == NULL)

    return;

/*此处表示对遍历的树结点进行的操作,根据你自己的要求进行操作,这里只是输出了结点的数据*/

operation1(T-
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值