9494,还叫kidgun,这个mm有点酷。
3是不是还要有一个先序遍历序列才能唯一确定二叉树啊

解决方案 »

  1.   

    f_ky(毛蛋哥哥) 说的是,网上所谓的“美女”“妹妹”、“帅哥”无凭无据的,难道你还能把自己的网页贴上来不成。偶像,土!!!
    这四个全是数据结构中的小玩意:
    1、堆栈
    2、单链表
    3、二叉树的生成和中序遍历
    4、设置一个记录(学号、姓名、语文、数学、总分),对总分排序(如快速排序、堆排序等),然后就是个输出问题了。
    查查《数据结构》这本书,不拘那一个版本,这些问题简单得很。但千万不要把几道作业题或是考试题和“命运”联系起来,这种玩意能当考题或是升职的话,那么这里所有的人都可以竞选美国总统了。
      

  2.   

    typedef struct _NODE{
    int nData;
    _NODE* pNext;
    } NODE,* LPNODE;LPNODE lpHead = NULL; //head of stackvoid CreateStack(LPNODE& lpHead)
    {
    LPNODE lpWork = NULL;
    do{
    lpWork = new NODE;
    cout<<"Please input number:";
    cin>>lpWork->nData;
    if(lpWork->nData != 0){
    lpWork->pNext = lpHead;
    lpHead = lpWork;
    }
    }while(lpWork->nData != 0);
    delete lpWork; //The last node is excrescent, so delete it
    }int GetLength(LPNODE lpHead)
    {
    int nLength = 0;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    nLength++;
    lpWork = lpWork->pNext;
    }
    return nLength;
    }float GetAverage(LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nLength = 0;
    int nTotal = 0;
    float fAverage;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    nLength++;
    nTotal += lpWork->nData;
    lpWork = lpWork->pNext;
    }
    fAverage = nTotal / nLength;
    return fAverage;
    }int GetMin((LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nMin = lpHead->nData;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    if(nMin > lpWork->nData){
    nMin = lpWork->nData;
    }
    lpWork = lpWork->pNext;
    }
    return nMin;
    }int GetMax((LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nMax = lpHead->nData;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    if(nMax < lpWork->nData){
    nMax = lpWork->nData;
    }
    lpWork = lpWork->pNext;
    }
    return nMin;
    }
      

  3.   

    Sort(LPNODE lpHead)
    {
    LPNODE lpWork = lpHead->pNext;
    while(lpWork != NULL){
    if(lpHead->nData < lpWork->nData){
    Switch(lpHead->nData, lpWork->nData);
    }
    lpWork = lpWork->pNext;
    }
    Sort(lpHead->pNext);
    }void Switch(int& a, int& b)
    {
    int c;
    c = a;
    a = b;
    b = c;
    }
      

  4.   

    第三:
    typedef struct _litem  
    {
    long lData;
    struct _litem *left,*right;
    }litem;
    void CTcView::OnButton1() 
    {
    long ls[]={1,4,2,78,5,68,9,10,45,67,21,52,7,0};//以零为结束litem pRoot;
    pRoot.lData = 0;
    pRoot.left = NULL;
    pRoot.right = NULL;
    int i = 0 ;
    while (ls[i] != 0 ) insert(&pRoot,ls[i++]); //插入数据并排序
    readdate(&pRoot);//读出数据排好的数据
    return;}void CTcView::insert(litem *pItem, long data)
    {
    if(pItem->lData > data )  //小于当前的数放入左边
    if (pItem->left == NULL ) {
    pItem->left  = new litem;
    pItem->left->left =NULL;
    pItem->left->right = NULL;
    pItem->left->lData = data;
    return ;
    }else insert(pItem->left , data);
    else 
    if (pItem->right  == NULL ) { ////大于当前的数放入右边
    pItem->right  = new litem;
    pItem->right->left = NULL;
    pItem->right->right =  NULL;
    pItem->right->lData = data;
    return ;
    }else insert(pItem->right , data);
    }
    void CTcView::readdate(litem *pItem)
    {
    CString s;
    if(pItem == NULL ) return; 
    readdate(pItem->left);
    s.Format("%d",pItem->lData ); //从小到大这里读取数据
    ml.AddString(s);//放入列表框
    readdate(pItem->right);}
      

  5.   

    typedef struct _litem  
    {
    long lData;
    struct _litem *left,*right;
    }litem;
    void CTcView::OnButton1() 
    {
    long ls[]={1,4,2,78,5,68,9,10,45,67,21,52,7,0};//以零为结束litem pRoot;
    pRoot.lData = 0;
    pRoot.left = NULL;
    pRoot.right = NULL;
    int i = 0 ;
    while (ls[i] != 0 ) insert(&pRoot,ls[i++]); //插入数据并排序
    readdate(&pRoot);//读出数据排好的数据
    return;}void CTcView::insert(litem *pItem, long data)
    {
    if(pItem->lData > data )  //小于当前的数放入左边
    if (pItem->left == NULL ) {
    pItem->left  = new litem;
    pItem->left->left =NULL;
    pItem->left->right = NULL;
    pItem->left->lData = data;
    return ;
    }else insert(pItem->left , data);
    else 
    if (pItem->right  == NULL ) { ////大于当前的数放入右边
    pItem->right  = new litem;
    pItem->right->left = NULL;
    pItem->right->right =  NULL;
    pItem->right->lData = data;
    return ;
    }else insert(pItem->right , data);
    }
    void CTcView::readdate(litem *pItem)
    {
    CString s;
    if(pItem == NULL ) return; 
    readdate(pItem->left);//从小到大,如是是从大到小的话改为right
    s.Format("%d",pItem->lData ); //从这里读取数据
    ml.AddString(s);//放入列表框
    readdate(pItem->right);}
      

  6.   

    typedef struct _NODE{
    int nData;
    _NODE* pLeft;
    _NODE* pRight;
    } NODE,* LPNODE;void MidVisit(LPNODE lpRoot)
    {
    if(lpRoot == NULL){
    return;
    }
    MidVisit(lpRoot->pLeft);
    Visit(lpRoot);
    MidVisit(lpRoot->pRight);
    }
    void Visit(LPNODE lpRoot)
    {
    cout<<lpRoot->nData;
    }
      

  7.   

    typedef struct _NODE{
    int nData;
    _NODE* pNext;
    } NODE,* LPNODE;LPNODE lpHead = NULL; //head of stackvoid CreateStack(LPNODE& lpHead)
    {
    LPNODE lpWork = NULL;
    do{
    lpWork = new NODE;
    cout<<"Please input number:";
    cin>>lpWork->nData;
    if(lpWork->nData != 0){
    lpWork->pNext = lpHead;
    lpHead = lpWork;
    }
    }while(lpWork->nData != 0);
    delete lpWork; //The last node is excrescent, so delete it
    }int GetLength(LPNODE lpHead)
    {
    int nLength = 0;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    nLength++;
    lpWork = lpWork->pNext;
    }
    return nLength;
    }float GetAverage(LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nLength = 0;
    int nTotal = 0;
    float fAverage;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    nLength++;
    nTotal += lpWork->nData;
    lpWork = lpWork->pNext;
    }
    fAverage = nTotal / nLength;
    return fAverage;
    }int GetMin((LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nMin = lpHead->nData;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    if(nMin > lpWork->nData){
    nMin = lpWork->nData;
    }
    lpWork = lpWork->pNext;
    }
    return nMin;
    }int GetMax((LPNODE lpHead)
    {
    /*
    if(lpHeader == NULL){
    throw NullPointerException;
    }
    */
    int nMax = lpHead->nData;
    LPNODE lpWork = lpHead;
    while(lpWork != NULL){
    if(nMax < lpWork->nData){
    nMax = lpWork->nData;
    }
    lpWork = lpWork->pNext;
    }
    return nMin;
    }