首页 > 其他 > 详细

数据结构课程期末总结二

时间:2015-12-30 17:08:07      阅读:221      评论:0      收藏:0      [点我收藏+]

第一:

二叉树三种遍历方式(由前两种得到第三种)

技术分享
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int  num=0;
struct donser
{
    int data;
    donser*lson;
    donser*rson;
};
donser *root;
donser *creat(int *a,int *b,int n)//da下标从i开始依次找  db下标从j开始向后扫  n向后扫几个
{
    donser *ss;
    for(int k=0;k<n;k++)
    {
        if(b[k]==a[0])
        {
            ss=new donser;
            ss->data=b[k];
            ss->lson=creat(a+1,b,k);
            ss->rson=creat(a+k+1,b+1+k,n-k-1);
            return ss;
        }
    }
    return NULL;
}

void solve(donser *r)
{
    if(r!=NULL)
    {
        solve(r->lson);
        solve(r->rson);
        if(r!=root) cout<<r->data<<" ";
        else cout<<r->data<<endl;
    }
}

int main()
{
    int  da[1010],db[1010];//前中
    while(~scanf("%d",&num))
    {
        for(int i=0;i<num;i++) {scanf("%d",&da[i]);}
        for(int i=0;i<num;i++) {scanf("%d",&db[i]);}
        root=creat(da,db,num);
        solve(root);
    }
    return 0;
}
View Code

 

第二:

构建一棵二叉排序树

技术分享
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int ld[100010],rd[100010],a,num,root,i;
void build(int root,int al)
{
    if(al>root)
    {
        if(rd[root]==-1)
        {
            rd[root]=al;
            //cout<<"al:"<<al<<" r root:"<<root<<endl;
        }
        else build(rd[root],al);
    }
    else
    {
        if(ld[root]==-1)
        {
            ld[root]=al;
            //cout<<"al:"<<al<<" l root:"<<root<<endl;
        }
        else build(ld[root],al);
    }
}

void solve(int root)
{
    if(ld[root]!=-1)
    {
        cout<<" "<<ld[root];
        solve(ld[root]);
    }
    if(rd[root]!=-1)
    {
        cout<<" "<<rd[root];
        solve(rd[root]);
    }
    else return;
}

int main()
{
    while(~scanf("%d",&num))
    {
        memset(ld,-1,sizeof(ld));
        memset(rd,-1,sizeof(rd));
        for(i=1;i<=num;i++)
        {
            scanf("%d",&a);
            if(i==1){root=a;}
            else build(root,a);
        }
        cout<<root;
        solve(root);
        cout<<endl;
    }
    return 0;
}
View Code

 

数据结构课程期末总结二

原文:http://www.cnblogs.com/dzzy/p/5089329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!