注册 登录
编程论坛 VC++/MFC

二叉树操作程序不是按顺序进行!上代码,大家解答下

张海锋 发布于 2013-10-23 11:12, 435 次点击
程序代码:

void Tree::PreOrder(TreeNode* b)//前序遍历
{
    if(b==NULL)
        return;
    else
    {
        cout<<b->data<<"\t";
        PreOrder(b->lchild);
        PreOrder(b->rchild);
    }
}

void Tree::InOrder(TreeNode* b)//中续遍历
{
    if(b==NULL)
        return;
    else
    {
        InOrder(b->lchild);
        cout<<b->data<<"\t";
        InOrder(b->rchild);
    }
}

void Tree::PostOrder(TreeNode* b)//后续遍历
{
    if(b==NULL)
        return;
    else
    {
        PostOrder(b->lchild);
        PostOrder(b->rchild);
        cout<<b->data<<"\t";
    }
}
    while(n)
    {
    switch(n)
    {
    case 1:
        {
        cout<<"这是前序遍历"<<endl;
        tree.PreOrder();
        break;
        }
    case 2:
        {
        cout<<"这是前序遍历"<<endl;
        tree.InOrder();
        break;
        }
    case 3:
        {
        cout<<"这是前序遍历"<<endl;
        tree.PostOrder();
        break;
        }

运行结果
只有本站会员才能查看附件,请 登录
2 回复
#2
yuccn2013-10-23 12:09
main函数呢?
代码明显不完整的  tree.PreOrder(); 等没有看到参数
#3
张海锋2013-10-23 12:20
回复 2楼 yuccn
程序代码:

TreeNode* Tree::Create(TreeNode *b)
{
    char data;
    try
    {
    cout<<"请输入节点数据\t";cin>>data;
    if(data<64||data>127)
    {
    throw "请输入一个英文字符";
    }
    }
    catch(char *s)
    {
        cout<<s<<endl;
    }
    if(data=='@')
    {
        b=NULL;
    }
    else
    {
        b=new TreeNode;b->data=data;
        NodeNumber+=1;
        b->lchild=Create(b->lchild);
        b->rchild=Create(b->rchild);
    }
    return b;
}

void Tree::PreOrder(TreeNode* b)
{
    if(b==NULL)
        return;
    else
    {
        cout<<b->data<<"\t";
        PreOrder(b->lchild);
        PreOrder(b->rchild);
    }
}

void Tree::InOrder(TreeNode* b)
{
    if(b==NULL)
        return;
    else
    {
        InOrder(b->lchild);
        cout<<b->data<<"\t";
        InOrder(b->rchild);
    }
}

void Tree::PostOrder(TreeNode* b)
{
    if(b==NULL)
        return;
    else
    {
        PostOrder(b->lchild);
        PostOrder(b->rchild);
        cout<<b->data<<"\t";
    }
}

void Tree::Delete(TreeNode* b)
{
    if(b==NULL)
        return;
    else
    {
        Delete(b->lchild);
        Delete(b->rchild);
        NodeNumber--;
        delete b;
    }
}

void Tree::Create()
{
    root=Create(root);
}

void Tree::PreOrder()
{
    PreOrder(root);
}

void Tree::InOrder()
{
    InOrder(root);
}

void Tree::PostOrder()
{
    PostOrder(root);
}

Tree::~Tree()
{
    Delete(root);
}
1