主要代码
/****************************************************
@Title: 数据结构实验
@Name: <实验6-3> 遍历二叉树及其应用
@Object:
[实验目的]
实现二叉树的二叉链表存储结构;
实现先序、中序和后序遍历二叉树;
遍历二叉树的应用:计算叶子结点,二叉树深度等
[实验提示]
1. 在 bintree.h 中实现二叉树的基本操作
2. 在 dsp0603.cpp 中编写应用遍历二叉树的算法
@Include:
bintree.h [*]
二叉树的二叉链表实现
@Usage:
请查看"TO-DO列表",根据要求完成代码
@Copyright: BTC 2004, Zhuang Bo
@Author: Zhuang Bo
@Date: 2004
@Description:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#define ElemType char //二叉树中数据元素类型
#include "bintree.h" //二叉树的实现
//打印结点数据(作为Visit函数)
Status print(char);
//计算二叉树中叶子结点的个数
int LeafCount(BiTree bt);
//计算二叉树的深度
int Deapth(BiTree bt);
//按缩进方式打印二叉树
void PrintTreeIndent(BiTree bt, int indent);
//无返回值打印叶子个数
void LeafCount2(BiTree bt, int &count);
//交换左右子树
Status change(BiTree bt);
///////////////////////////////////////////////////////////
// 主程序
void main()
{
BiTree bt = 0;
int count=0 ;
//建立二叉树
printf("建立二叉树(按先序输入二叉树中的结点,空格表示空树)\n");
if( CreateBiTree(bt)==ERROR ) {
printf("ERROR: call CreateBiTree\n");
system("pause");
exit(1);
}
PrintTree(bt);
//遍历二叉树
printf("\n先序遍历: ");
if( PreOrderTraverse(bt,print)==ERROR )
printf("ERROR: call PreOrderTraverse\n");
printf("\n中序遍历: ");
if( InOrderTraverse(bt,print)==ERROR )
printf("ERROR: call InOrderTraverse\n");
printf("\n后序遍历: "