数据结构关于树的一些递归函数代码

typedef struct BinTreeNode                   //树节点定义代码
{
ElemType data;
BinTreeNode *leftChild;
BinTreeNode *rightChild;
}BinTreeNode;


typedef struct BinTree                           //创建树类型定义代码
{
BinTreeNode *root;
ElemType     ref;

}BinTree;

//三种树的遍历方式代码       以下递归所有函数形参都为树根节点指针

void PreOrder(BinTreeNode *t)
{
if(t != NULL)
{
cout<<t->data<<" ";
PreOrder(t->leftChild);
PreOrder(t->rightChild);
}
}
void InOrder(BinTreeNode *t)
{
if(t != NULL)
{
InOrder(t->leftChild);
cout<<t->data<<" ";
InOrder(t->rightChild);
}
}
void PostOrder(BinTreeNode *t)
{
if(t != NULL)
{
PostOrder(t->leftChild);
PostOrder(t->rightChild);
cout<<t->data<<" ";
}
}

//递归求树的大小代码

int Size(BinTreeNode *t)
{
if(t == NULL)
return 0;
else
return Size(t->leftChild) + Size(t->rightChild) + 1;
}

//递归求树高度代码

int Height(BinTreeNode *t)
{
if(t == NULL)
return 0;
else
{
int leftheight = Height(t->leftChild);
int rightheight = Height(t->rightChild);
return (leftheight > rightheight ? leftheight : rightheight)+1;
}
}

//递归按值在树中查找数据代码

BinTreeNode* Find(BinTreeNode *t, ElemType key)
{
if(t == NULL)
return NULL;
if(t != NULL)
{
if(t->data == key)
return t;
BinTreeNode *p = Find(t->leftChild, key);
if(p != NULL)
return p;
return Find(t->rightChild, key);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值