求程序完成+改错(C++)

[复制链接]
查看11 | 回复0 | 2010-12-2 16:27:08 | 显示全部楼层 |阅读模式
/************************************************
设计递归算法求二叉树的叶子数目及高度
*****************************************************/
#include
#define max(a,b)((a) > (b) ? (a) : (b))
int num;
template
struct BiNode //二叉树的结点结构
{
T data;
BiNode *lchild, *rchild;
};
template
class BiTree
{
public:
//BiTree(){root=NULL;}

BiTree(BiNode *root); //带参构造函数

~BiTree();
//析构函数

void PreOrder(BiNode *root);
//前序遍历二叉树
//void InOrder(BiNode *root);
//void PostOrder(BiNode *root)
void Depth(BiNode *root);
private:

BiNode *root;
//指向根结点的头指针

void Creat(BiNode *root);
//有参构造函数调用

void Release(BiNode *root); //析构函数调用
};
template
BiTree::BiTree(BiNode *root)
{
Creat(root);
}
template
BiTree::~BiTree()
{
Release(root);
}
template
void BiTree::PreOrder(BiNode *root)
{
if(root==NULL)return;
else{
if(root->lchild==NULL && root->rchild==NULL)
num++;
coutdatalchild);
PreOrder(root->rchild);
}
}
template
//建立二叉树的算法
void BiTree::Creat(BiNode *root)
{
T ch;
cin>>ch;

if (ch=='#') root = NULL;

else{

root = new BiNode;
//生成一个结点

root->data=ch;

Creat(root->lchild);
//递归建立左子树

Creat(root->rchild);
//递归建立右子树

}
}
template
void BiTree::Release(BiNode *root)
{
if (root != NULL){
Release(root->lchild); //释放左子树

Release(root->rchild); //释放右子树
//
coutdata
void BiTree::Depth(BiNode *root)
{
int hl,hr;
if( !root)
return 0;
else{
hl=Depth(root->lchild);
hr=Depth(root->rchild);
return max(hl,hr)+1;
}
}
void main()
{
cout* btr =new BiNode;

BiTree bt(btr); //创建一棵树
cout (b) ? (a) : (b)) int num;template struct BiNode //二叉树的结点结构{ T data; BiNode *lchild, *rc
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行