所以我有一张看起来像这样的树形图......
我想知道这是一种什么样的安排?我尝试使用二叉树创建树实现,但逻辑似乎没有产生上面的图片。
首先我创建了节点,每个节点都有左右节点和父节点,我也尝试过一个子节点列表而不是左右节点,但是在正确的位置插入节点的逻辑仍然是个谜。我
答案 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),
}
};