小李子的数据结构

该博客展示了如何使用C语言创建和操作二叉树,包括初始化、创建、检查是否为空、计算深度以及前序和中序遍历。在调试过程中遇到了一个小错误,导致浪费了一段时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

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

void InitBiTree(BiTree &T);
void CreateBiTree(BiTree &T);
bool BiTreeEmpty(BiTree T);
int BiTreeDepth(BiTree T);
void Visit(TElemType e);
void PreOrderTraverse(BiTree T, void(*Visit)(TElemType));
void InOrderTraverse(BiTree T, void(*Visit)(TElemType));

int main()
{
BiTree T;
int depth = 0;
InitBiTree(T);
CreateBiTree(T);
printf(“深度为%d\n”, BiTreeDepth(T));
PreOrderTraverse(T, Visit);
printf("\n");
InOrderTraverse(T, Visit);
return 0;
}

void InitBiTree(BiTree &T)
{
T = NULL;
}

void CreateBiTree(BiTree &T)
{
TElemType num;
scanf_s("%d", &num);
if (num == 0)
{
T = NULL;
}
else
{
T = (BiTree)malloc(sizeof(BiTNode));
if (!T)
exit(-1);
T->data = num;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}

bool BiTreeEmpty(BiTree T)
{
if (T == NULL)
{
return false;
}
else
return true;
}

int BiTreeDepth(BiTree T)
{
int i, j;
if (T == NULL)
{
return 0;//空树深度为0
}
i = BiTreeDepth(T->lchild);
j = BiTreeDepth(T->rchild);
return i > j ? i + 1 : j + 1;
}

void Visit(TElemType e)
{
printf("%d->", e);
}

void PreOrderTraverse(BiTree T, void(*Visit)(TElemType))
{
if (T)
{
Visit(T->data);
PreOrderTraverse(T->lchild,Visit);
PreOrderTraverse(T->rchild,Visit);
}
}

void InOrderTraverse(BiTree T, void(*Visit)(TElemType))
{
if (T)
{
InOrderTraverse(T->lchild, Visit);
Visit(T->data);
InOrderTraverse(T->rchild, Visit);
}
}

这个程序,我有一个错误,debug了很久,,,结果忘了打空格。。。一个多小时啊。。。晕啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值