大学程序实验.数据结构.树型结构及其应用二.树的深度


0 目录

4 树型结构及其应用

4.2 树的深度

4.2.1 题目

编写算法求二叉树的深度。

4.2.2 源码

// 递归树.cpp : Defines the entry point for the console application.
//
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "malloc.h"

#define OK 1
#define ERROR 0

typedef char TElemType;
typedef int Status;

typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;


void BiTreeMenu();
Status CreateBiTree(BiTree *T);
void PreOrderTraverse(BiTNode* T);
Status BiTreeDepth(BiTNode* T);


void BiTreeMenu()
{
printf("========二叉树深度计算========\n");
printf("二叉树创建\n");
printf("请输入二叉树各节点数:");
}

Status CreateBiTree(BiTree *T)
{
TElemType ch;
TElemType temp;

scanf("%c",&ch);
temp=getchar();

if(ch == '#')
{
*T = NULL;
}
else
{
*T=(BiTree)malloc(sizeof(BiTNode) );
if(!(*T))
{
return ERROR;
}
else
{
(*T)->data=ch;
printf("请输入%c的左节点的值:",ch);
CreateBiTree(&(*T)->lchild);

printf("请输入%c的右节点的值:",ch);
CreateBiTree(&(*T)->rchild);
}
}
return OK;
}

void PreOrderTraverse(BiTNode *T)
{
if(T)
{
printf(" %c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}

Status BiTreeDepth(BiTNode* T)
{
int lDepth = 0, rDepth = 0;

if(T == NULL)
{
return ERROR;
}
else
{
lDepth = BiTreeDepth(T->lchild);
rDepth = BiTreeDepth(T->rchild);
}

return lDepth > rDepth ? lDepth+1 : rDepth+1;
}

Status main()
{
BiTree pRoot;
BiTree *p=(BiTree*)malloc(sizeof(BiTree));
int depth = 0;

BiTreeMenu();
printf("请输入第一个节点的值,'#'代表没有叶节点:\n");
CreateBiTree(&pRoot);

PreOrderTraverse(pRoot);
printf("\n");

depth = BiTreeDepth(pRoot);
printf("\n");
printf("树的深度为:%d\n",depth);

return OK;
}

1.1.3 下载

链接地址: ​​4.2_递归树.CPP​