私は親と子だけのn-aryツリー構造を持っています。スパンツリー自体は、ルートという1つのノードのみを保持します。次に、他のノードまたはルートにリンクされたノードが作成されます。各ノード(ルートを含む)には、最大MAXCHILDRENの子ノードを含めることができます。構造は次のとおりです。
typedef struct node{
unsigned int id; //every node has different id
struct node* parent; //points to parent node
struct node* children[MAXCHILDREN]; //pointers to all children of this node
}node;
typedef struct spantree{
node root; //root node
}spantree;
視覚的な画像:
root
___O
/ / \
O O O
/ \
O O
ツリーを作成した後、すべての割り当てを解除したいのですが、どちらの方法で行うのかわかりません。ツリーが壊れてしまうため、ルートから割り当て解除を開始できません。だから私は葉から始めて根まで上がらなければならないと想像しますか?しかし、それは私が最初に最も深い葉を見つけなければならないことを意味しますね?どうやって始めたらいいのか、かなり戸惑いました。
必要だとは思いませんが、保険のために、新しいノードを作成する必要があるたびに使用するものを次に示します。
node *newNode;
newNode=(node*)malloc(sizeof(node));
//then I modify it to my preferences