0

我正在尝试创建一个包含 50 个随机变量的二叉搜索树,我写了一个代码,但没有声明随机变量。请帮帮我

#include <iostream>
#include <cstdlib>
using namespace std;

//创建一个包含value的类节点,rvalue存储rlink指向的值,lvalue存储llink指向的值

class node


{
private:
int value;
int rvalue;
int lvalue;
node *rlink;
node *llink;

public:

void insertnode(node*,int);
node *create(node*,int); 

};



void node::insertnode(node *h,int k)

{

h=new node;
h->value=k;
h->rlink=NULL;
h->llink=NULL;
h->rvalue=0;
h->lvalue=0;

}


node *node::create(node*root, int i)

{

int A[i];
for(int j=0; j<i; j++) {
    A[j]=rand()%1000;  //stores random values in array
    cout<<A[j];

}
node *k;
node *h;
insertnode(root, A[0]);

cout<<h->value;

for (int j=1; j<i; j++) {
    if(A[j]<h->value){
        if(h->llink==NULL) {
            insertnode(k, A[j]);
            h->lvalue=k->value;

        }
        h->llink=k;
    }
    else if(A[j]>h->value)
    {
        if(h->rlink==NULL) {
            insertnode(k, A[j]);
            h->rvalue=k->value;

        }
        h->rlink=k;

    }


} 

return root;


}


int main()

{


int i;
cout<<"enter the number of elements in a matix";
cin>>i;
node s;
node *h;
h=s.create(h,i);

}
4

2 回答 2

0

你的代码有很多问题。

  • 要创建节点,只需为给定值创建一个新节点(这应该使用构造函数完成。节点类中的其他值将在节点插入树时初始化)
  • 要插入一个节点,您应该始终传递树的根(或对树本身的引用)和要插入的节点,然后在 insert 方法中找到插入节点的位置(这也可以是您进行 aeny 平衡的地方如有必要)
  • 如果您使用树方法(我会推荐),树应该有一个对它的根的引用,并且可能是其中的节点数
  • 要生成随机节点,使用数组没有用,您只需获取一个新的随机值,为其创建一个节点,然后将其插入到列表中

要执行此操作的最后一部分,请执行以下操作(假设 C++)

int main() { 
  Tree *tree = new Tree(); //This creates a tree (you will need to create a tree class with a constructor
  int total = 50; //This the number of nodes you want store this however is necessary
  ....
  srand(time(NULL));
  for(int i = 0; i < total; i++) {
     int val = rand() % 1000 + 1; //This gets a number between 1-1000
     Node *node = new Node(val); //This constructs the node (write this constructor)
     tree.insertNode(node); //This will insert the node into the tree (write this method)
  }
  ....
}

假设 Node 和 Tree 的构造函数和 insertNode 方法单词,这将创建一个具有 50 个值的树

于 2012-04-10T17:06:28.017 回答
0

在函数 create() 中,您使用变量 k 和 h,它们是指向节点的指针。但是您还没有初始化这个变量,也没有为这些指针分配空间。首先分配内存给这个变量。

于 2012-04-10T16:58:07.217 回答