C 具有多个子节点和左右两个节点的二叉搜索树
我想用C语言制作一个二叉树,如下图所示 使二叉树具有两个节点的结构如下-C 具有多个子节点和左右两个节点的二叉搜索树,c,data-structures,binary-search-tree,C,Data Structures,Binary Search Tree,我想用C语言制作一个二叉树,如下图所示 使二叉树具有两个节点的结构如下- struct node { int data; struct node* left; struct node* right; }; 但是对于制作一个包含多个子树的树,结构需要每次都改变,那么有没有办法制作一个每次都改变的结构呢 您可以定义如下节点: struct node { int data; node *firstChild; node *nextSibling; };
struct node {
int data;
struct node* left;
struct node* right;
};
但是对于制作一个包含多个子树的树,结构需要每次都改变,那么有没有办法制作一个每次都改变的结构呢
您可以定义如下节点:
struct node
{
int data;
node *firstChild;
node *nextSibling;
};
然后呢,
在遍历子节点时,这将涉及空检查和迭代。您可以这样定义节点:
struct node
{
int data;
node *firstChild;
node *nextSibling;
};
然后呢,
在遍历子节点时,这将涉及空检查和迭代。在C中,不能动态更改结构。但是您想要的(每个节点中可变数量的子节点)可以通过稍微迂回的方式实现。如果要将左侧和右侧节点作为独立于其他子节点的实体保留,可以使用包含该节点所有其他子节点的链接列表的二叉树:
struct TreeNode
{
int data;
ChildNode *firstChild;
TreeNode *left;
TreeNode *right;
};
struct ChildNode
{
int data;
ChildNode *next;
};
在C语言中,不能动态更改结构。但是您想要的(每个节点中可变数量的子节点)可以通过稍微迂回的方式实现。如果要将左侧和右侧节点作为独立于其他子节点的实体保留,可以使用包含该节点所有其他子节点的链接列表的二叉树:
struct TreeNode
{
int data;
ChildNode *firstChild;
TreeNode *left;
TreeNode *right;
};
struct ChildNode
{
int data;
ChildNode *next;
};
根据定义,二叉树每个节点最多有两个直接子节点。你在图片中描述的不是二叉树。也许您正在考虑B-树?有许多方法可以表示每个节点有多个子节点的树。如果可以对节点可以拥有的子节点数量设置一个较小的限制,那么为子节点设置一个较小的固定数组就足够了。如果它是无界的,则可以动态调整子数组的大小。或者可以使用另一种结构,例如双链接列表。这完全取决于您的使用模式代码>和右键,可以创建子节点列表。这样子节点的数量就不受限制。根据定义,二叉树每个节点最多有两个直接子节点。你在图片中描述的不是二叉树。也许您正在考虑B-树?有许多方法可以表示每个节点有多个子节点的树。如果可以对节点可以拥有的子节点数量设置一个较小的限制,那么为子节点设置一个较小的固定数组就足够了。如果它是无界的,则可以动态调整子数组的大小。或者可以使用另一种结构,例如双链接列表。这完全取决于您的使用模式代码>和右键,可以创建子节点列表。这样子节点的数量就不受限制了,这就是所谓的