有3个孩子的树

时间:2013-10-06 04:47:26

标签: c++ data-structures

这是数据结构类型问题我对树有问题我想从用户输入输入说出它的名字。 “DAN”现在我想为那个根节点有三个孩子的树做一个树。 我有一棵树,有三个孩子。

我将如何使用链表实现它。因为在二叉树链表中有两个孩子。

但这里我有三个。很简单,我有一个有三个孩子的根节点

                root
                / | \
               /  |  \
             ch1 ch2  ch3

1 个答案:

答案 0 :(得分:0)

很简单,你创建一个带有三个子指针的结构:

struct TreeNode
{
    int data;
    TreeNode *children[3];
};

或者,您可以将子项转换为链接列表,以便任何给定节点只有一个指向其第一个子项及其第一个子项的直接指针:

struct TreeNode
{
    int data;
    TreeNode *firstChild;
    TreeNode *nextSibling;
};

// To iterate through the children of a node:
TreeNode *child = root->firstChild;
while (child != NULL)
{
    // Do stuff with child
    ...
    child = child->nextSibling;
}

这更容易扩展到任意数量的孩子,但在访问数据时会有更高的性能损失。因此,如果您知道每个节点最多有3个子节点,最好使用固定的子指针数组来改善访问时间并改善缓存局部性。