零、说明
一、数据类型
typedef struct BTreenode
{
Elemtype data;
struct BTreenode *lch,*rch;
}BTreenode,*BTree;
二、创建
主函数中:
int main()
{
BTree T;
T=Create();
...
函数内容:
BTree Create()
{
Elemtype ch;
BTree p;
cin>>ch;
if(ch=='#')
{
return NULL;
}
else
{
p=new BTreenode;
p->data=ch;
p->lch=Create();
p->rch=Create();
}
return p;
}
三、遍历
- 先序
void Preorder(BTree T)
{
if(T==NULL)
{
return;
}
cout<<T->data;
Preorder(T->lch);
Preorder(T->rch);
}
- 中序
void Inorder(BTree T)
{
if(T==NULL)
{
return;
}
Inorder(T->lch);
cout<<T->data;
Inorder(T->rch);
}
- 后序
void Postorder(BTree T)
{
if(T==NULL)
{
return;
}
Postorder(T->lch);
Postorder(T->rch);
cout<<T->data;
}
四、其他
- 深度
巧妙运用了递归的思想
int Depth(BTree T)
{
int i,j;
if(!T)return 0;
if(T->lch)
{
i=Depth(T->lch);
}
else
{
i=0;
}
if(T->rch)
{
j=Depth(T->rch);
}
else
{
j=0;
}
return i>j?i+1:j+1;
}
- 某节点的值
int Value(BTree p)
{
return p->data;
}
- 修改某节点的值
void Assign(BTree p,int value)
{
p->data=value;
}