迭代-kd树插入问题,程序没有问题,但是运行无法达到理想!达人速进啊!

问题描述

kd树插入问题,程序没有问题,但是运行无法达到理想!达人速进啊!

程序运行没有问题,但是当插入2 3,4 5,6 1数据时就发生6 1插入失败,想问问我哪里错了?
这是结构体typedef struct kd
{
int a[2];
int deep;
int h,left,right;
kd *leftchild;
kd *rightchild;
}kdt;
这是主程序

// kd.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
void inittree(kdt **R)
{
*R=(kdt *)malloc(sizeof(kdt));
(*R)->leftchild=NULL;
(*R)->rightchild=NULL;
(*R)->deep=0;
(*R)->h=0;
(*R)->left=0;
(*R)->right=0;
}

insert(kdt *q,kdt *T)
{
/*for(int i=0;i<2;i++)
{

        printf("%d ",q->a[i]);
    }*/

kdt *p;

p=T;

if(p->h==0)
{
    for(int i=0;i<2;i++)
    {
        p->a[i]=q->a[i];
        //printf("%d ",p->a[i]);

    }
    p->h=1;
    printf("插入根节点成功n");

return 1;
}

int i=T->deep%2;

if(T->a[i]>q->a[i])//左
{
q->deep++;
printf("l插%d入%d成%d功%dn",T->left,T->deep,T->a[i],i);
if(T->left)
insert(q,T->leftchild);
else
{
T->left=1;
T->leftchild=q;
return 1;
}
}

        else//右
        {
            q->deep++;
            printf("r插%d入%d成%d功%dn",T->right,T->deep,T->a[i],i);
            if(T->right)
                insert(q,T->rightchild);
            else
            {
                T->right=1;
                T->rightchild=q;
                return 1;
            }
        }

return 0;
}

int main(int argc, char* argv[])
{
int k;
kdt *root,*q,*T;
inittree(&root);

inittree(&T);
T=root;

//  printf("%d",q->deep);
inittree(&q);

printf("请输入结点坐标:");
for(int i=0;i
{
scanf("%d",&q->a[i]);
}

            q->deep=0;
            q->h=1;

            i=insert(q,T);
            if(i)printf("插入成功");
            else printf("插入失败");

return 0;

}

时间: 2024-05-20 00:29:55

迭代-kd树插入问题,程序没有问题,但是运行无法达到理想!达人速进啊!的相关文章

android播放swf,程序没有问题了,但是真机测试就是一直提示flash插件版本过低

问题描述 android播放swf,程序没有问题了,但是真机测试就是一直提示flash插件版本过低 如题,我的手机是华为荣耀3c.编译什么的都没问题了,在avd上也正常,难道是手机不支持么? 解决方案 从adobe官网下载对应的flash的apk更新下. 解决方案二: 都是过了,不管是adobe官网还是从自带的app市场都不行

eclipse导入-Java小白,eclipse中导入图形界面包就会出错,程序没有问题,请大神指点。

问题描述 Java小白,eclipse中导入图形界面包就会出错,程序没有问题,请大神指点. Description Resource Path Location Type Access restriction: The type JOptionPane is not accessible due to restriction on required library C:Program FilesJavajre1.8.0_20librt.jar dialog.java /myjava3/src l

kd树-C语言根据数组建立KD树的代码问题

问题描述 C语言根据数组建立KD树的代码问题 数组x已经从小到大排好顺序 根据这个数组建立kd树(即每次选取中位数作为节点) 代码如下: struct node *createKdTree(int x[],int size){ struct node *root; root = malloc(sizeof(struct node)); if(size==0){ root=NULL; } else{ int i=size/2; root->xValue=x[i];//根 if(i>=1){ ro

基于KD树和R树的多维云数据索引

基于KD树和R树的多维云数据索引 何婧 吴跃 杨帆 尹春雷 周维 针对云存储系统大多基于键值对key,value模型存储数据,多维查询需要对整个数据集进行完全扫描,查询效率较低的问题,提出了一种基于KD树和R树的多维索引结构(简称KD-R索引).KD-R索引采用双层索引模式,在全局服务器建立基于KD树的多维全局索引,在局部数据节点构建R树多维本地索引.基于性能损耗模型,选取索引代价较小的R树节点发布到全局KD树,从而优化多维查询性能.实验结果表明:与全局分布式R树索引相比,KD-R索引能够有效提

hibernate+c3p0连接池,插入数据程序运行一会就卡住

问题描述 程序是一个导入Excel数据的工具,excel中有好几千条数据,但是程序运行一会,每次都是导入24条以后程序就不运行了,程序好像处于挂起状态一样,卡住了,控制台上也不再打印hibernate日志信息,不知道什么原因,有没有会的看一下,谢谢!   hibernate.cfg.xml配置如下:<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernat

MYSQL客户机程序4—在运行时获取连接参数

    6.5 客户机程序4-在运行时获取连接参数     现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值.客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译.这十分不方便,特别是想使程序用于其他人时.在运行时指定连接参数的一个通用的方法是使用命令行选项.MySQL分发包中的程序接受两种形式的连接参数,如表6 - 1所示.    与标准的MySQL客户机程序一致,

java程序在eclipse运行下出错,但是在cmd可以正常运行,求大神!

问题描述 java程序在eclipse运行下出错,但是在cmd可以正常运行,求大神! 源代码: class Person{ private String name; private String location; Person(String name){ this.name = name; location = "beijing"; } Person(String name,String location){ this.name = name; this.location = loc

防止同一个程序多次运行。 [VB.NET]

程序 防止同一个程序多次运行. '*****************方法一:防止程序多次打开*****************' 函数名: IsInstanceRunning ' 功 能: 判断工程是否已运行 ' 参 数: 无 ' 返回值: True 已运行 False 未运行 '******************************************************* Public Function IsInstanceRunning() As Boolean Dim cu

WinCE应用程序开机自动运行的又一种方法

近日在开发过程中遇到WinCE应用程序开机自动运行的问题,在网上找了找,发现大概有以下三种方法: 1.将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到StartUp目录下,这样当系统运行后应用程序就能自动运行: 2.直接替换Wince的SHELL,即修改注册表: [HKEY_LOCAL_MACHINE\init] "Launch50"="explorer.exe" "Depend50"=hex:14,00, 1e,00 把这个expl