| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2520 人关注过本帖
标题:二叉树查找指针使用的问题,求大家帮忙解决下
只看楼主 加入收藏
qweiuy566
Rank: 2
等 级:论坛游民
帖 子:48
专家分:19
注 册:2016-1-27
结帖率:75%
收藏
已结贴  问题点数:15 回复次数:2 
二叉树查找指针使用的问题,求大家帮忙解决下
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct Node


{
    int weight; //值
struct    Node *zuo;//左子树
struct    Node *you;//右子树
    int xuhao; //序号
    int lchild;  //左孩子存在为1,否则为0
    int rchild;  //右孩子存在为1,否则为0
}ECNode;
void zishu(ECNode *p,ECNode *q);
int chazhao(ECNode *L,int key);
main()
{
    int n,i,key;
    ECNode *L,*p,*q;          //小的放左节点,大的放右节点
    cout<<"要输入多少个数"<<endl;
    cin>>n;
    int a[n];
    cout<<"输入数组:"<<endl;
    for(i=0;i<n;i++)
    cin>>a[i];
    cout<<"您输入的数是"<<endl;
    for(i=0;i<n;i++)  cout<<a[i]<<" ";
    cout<<endl;
    L=(ECNode*)malloc(sizeof(ECNode));
    p=L;
    L->weight=a[i]; L->xuhao=1;
    L->lchild=0;  L->rchild=0;            //等于0为没有,其他为序号
    for(i=1;i<n;i++)
    {
        q=(ECNode*)malloc(sizeof(ECNode));
        q->weight=a[i];q->xuhao=i+1;
        if(q->weight<p->weight)
        zishu(p,q);
    }
    cout<<"输入要查找的数:"<<endl;
    cin>>key;
    cout<<"要查找的是第"<<chazhao(L,key)<<"个数"<<endl;;
}

void zishu(ECNode *p,ECNode *q)
{
    int key1;
    if(q->weight<p->weight)
    {
        if(!p->lchild) {p->zuo=q;p->lchild=1;}
        else zishu(p->zuo,q);
    }
    else
    {
        if(!p->rchild){ p->you=q;p->rchild=1;}
        else zishu(p->you,q);
    }
   
}

int chazhao(ECNode *L,int key)
{
    ECNode *k;
    k=L;
    if(L->weight>key) {  k=k->zuo;chazhao(L->zuo,key);  }
    else if(L->weight<key) { k=k->you;chazhao(L->you,key); }
    else return k->xuhao;
}
2016-07-07 20:42
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:15 
程序代码:
    L = (ECNode*) malloc(sizeof(ECNode));
    p = L;
//  L->weight = a[i];
    L->weight = a[0];
    L->xuhao = 1;
    L->lchild = 0;
    L->rchild = 0;          //等于0为没有,其他为序号
    for (i = 1;i < n;i++)
    {
        q = (ECNode*) malloc(sizeof(ECNode));
        q->weight = a[i];
        q->xuhao = i + 1;
//      if(q->weight<p->weight)
        zishu(p, q);
    }


[fly]存在即是合理[/fly]
2016-07-08 13:33
qweiuy566
Rank: 2
等 级:论坛游民
帖 子:48
专家分:19
注 册:2016-1-27
收藏
得分:0 
我还一直以为是chazhao()函数出现问题呢,谢谢版主的帮助

吾道不孤
2016-07-08 16:26
快速回复:二叉树查找指针使用的问题,求大家帮忙解决下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053055 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved