具有多个子节点和下一个节点的树

use*_*913 10 c tree pointers data-structures

我想构建一个具有以下特征的树:

  1. 每个节点可以有1个"下一个节点".
  2. 每个节点可以有多个子节点.
  3. 子节点的数量可以从一个节点到另一个节点而变化

我在想一个看起来像这样的结构:

struct tree {
  int value;
  struct tree* nextnode;
  struct tree** childnode;
};
Run Code Online (Sandbox Code Playgroud)

必须对每个节点处的子节点数进行参数化.我不知道该怎么做.提前致谢!

编辑:让我尝试使用一个例子来定义它:让我们采取起始节点.现在,我将在编译时定义将有3个NextNodes,每个NextNodes将有2个ChildNodes.这是在Depth=0.在Depth = 1(即对于每个子节点Depth=0),我指定将有4个,NextNodes并且对于每个子节点NextNodes将有3个ChildNodes,依此类推.希望我能够正确地传达它.请问我是否在某处不清楚.

Edit2:这是一张照片:

这是一张照片

小智 1

这是一棵N叉树。我建议你拆分树和节点

typedef struct tree tree;
typedef struct node node;

struct tree {
    node * root;
};

struct node {
    int value;
    node * next_node;
};
Run Code Online (Sandbox Code Playgroud)

现在您可以执行树结构的所有操作

这是一个例子

node * add_child(node *parent, int child_value){
    node * child = malloc(sizeof(node));
    child->value = child_value;
    if(parent->next == NULL)
        parent->next = child;
    else{
        node * temp = parent->next;
        while(temp->next != NULL)
            temp = temp->next;
        temp->next = child;
    }
    return child;
}
Run Code Online (Sandbox Code Playgroud)