1

n次元ツリーを構築したい。vector各ノードの子を格納するために a を使用します。私が書いたコードは「スタック オーバーフロー エラー」を出しますが、その理由はわかりませんnew。誰かが私が間違っていた場所を教えてくれたら、とても感謝しています。

class Node
{
public:
  int q_number;
  int layer;
  int value;
  vector<Node*> n_list;

  Node(int n):q_number(n),n_list(n) //initialize node vector
  {
  }
};

Node* buildtree(int n,int depth)
{
  Node * node = new Node(depth);

  if(n==depth-1)
  {
    for(int i = 0; i<depth;i++)
    {
      node->n_list[i] = NULL;
      node->n_list[i]->value = i;
      node->n_list[i]->layer = depth-1;
    }
  }
  else
  { 
    for (int i =0;i<depth;i++)
    {               
      node->n_list[i] = buildtree(n++,depth);// span the tree recursively           
      node->n_list[i]->value = i;
      node->n_list[i]->layer = n;   // the layer value
    }
  }

  return node;
}
int main()
{
  Node * tree = buildtree(0,8); // build an octree
}
4

1 に答える 1