用于此组织的树结构类型是什么?

时间:2015-07-05 12:05:49

标签: c# data-structures tree

所以我有一张看起来像这样的树形图......

我想知道这是一种什么样的安排?我尝试使用二叉树创建树实现,但逻辑似乎没有产生上面的图片。

首先我创建了节点,每个节点都有左右节点和父节点,我也尝试过一个子节点列表而不是左右节点,但是在正确的位置插入节点的逻辑仍然是个谜。我

1 个答案:

答案 0 :(得分:1)

我想到了两种类型的树。

这可能是二叉树。其中定义如下:

public class BinaryTree<T>
{
    public BinaryTree(T value) { this.Value = value; }
    public T Value { get; set; }
    public BinaryTree<T> Left { get; set; }
    public BinaryTree<T> Right { get; set; }
}

如果我们使用这个类,你的树可以这样表示:

var binaryTree = new BinaryTree<int>(0)
{
    Left = new BinaryTree<int>(1)
    {
        Left = new BinaryTree<int>(2)
        {
            Left = new BinaryTree<int>(6),
            Right = new BinaryTree<int>(6),
        },
    },
    Right = new BinaryTree<int>(1)
    {
        Left = new BinaryTree<int>(3),
        Right = new BinaryTree<int>(3),
    }
};

或者,您的树可能是n-ary树的特例。在这种情况下,可以这样定义:

public class Tree<T> : List<Tree<T>>
{
    public Tree(T value) { this.Value = value; }
    public T Value { get; set; }
}

你的树声明为:

var tree = new Tree<int>(0)
{
    new Tree<int>(1)
    {
        new Tree<int>(2)
        {
            new Tree<int>(6),
            new Tree<int>(6),
        },
    },
    new Tree<int>(1)
    {
        new Tree<int>(3),
        new Tree<int>(3),
    }
};