具有多个子节点和左右两个节点的二进制搜索树

时间:2017-10-28 09:28:36

标签: c data-structures binary-search-tree

我想制作一个这样的二叉树,如下面C语言中给出的图像所示。

使二元树具有两个节点的结构就是这个 -

(#200) Subject does not have permission to post videos on this target

但是为了制作一个有多个孩子的树,结构需要每次都改变,那么有没有办法让结构每次都改变?

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以像这样定义一个节点:

select to_char(date,'Mon') as Month,
       extract(year from date) as Year,
       case when type= 1 then sum("subtotal")  END as sales,
       case when type= 2 then sum("subtotal")  END as buys
   from table
   group by 1

然后,

  1. 以这种方式访问​​第一个孩子: myNode-> firstChild

  2. 第二个孩子: myNode-> firstChild-> nextSibling

  3. 第N个孩子: myNode-> firstChild-> nextSibling-> ...-> nextSibling

  4. 这将涉及通过子节点时的空检查和迭代。

答案 1 :(得分:1)

在C中,您无法动态更改结构。但你想要的是(每个节点中可变数量的孩子)可以稍微迂回的方式实现。如果要将左侧和右侧节点保存为与其他子节点不同的实体,则可以使用包含该节点的所有其他子节点的链接列表的二叉树:

struct TreeNode
{
    int data;
    ChildNode *firstChild;
    TreeNode *left;
    TreeNode *right;
};

struct ChildNode
{
    int data;
    ChildNode *next;
};