【发布时间】:2017-08-13 19:49:15
【问题描述】:
我尝试为具有静态根值和 2 个子节点的静态二叉树创建数据结构。我试图使其对任意数量的子值都具有动态性。如何使用静态根节点来做到这一点。如果我采用 myArray = {3,11,8,18,21,36,1},我该如何实现。任何没有复杂代码更改的简单代码都会有所帮助。
class Program
{
static void Main(string[] args)
{
TreeNode rootNode = new TreeNode();
rootNode.value = 9;
int[] myArray = { 3, 11 };
for (int i = 0; i < myArray.Length; i++)
{
if (myArray[i] > rootNode.value)
{
//add to right node
TreeNode right = new TreeNode();
right.value = myArray[i];
rootNode.rightNode = right;
}
else
{
//add to left node
TreeNode left = new TreeNode();
left.value = myArray[i];
rootNode.leftNode = left;
}
}
}
}
class TreeNode
{
public int value { get; set; }
public TreeNode leftNode { get; set; }
public TreeNode rightNode { get; set; }
}
【问题讨论】:
-
你想要什么样的二叉树?
-
一棵完整的二叉树
-
完整二叉树只有一个条件,即所有节点都有 0 或 2 个子节点。这意味着什么值将具有当前节点的后代子节点并不重要,但是您发布此
if (myArray[i] > rootNode.value)。那么你确定你想要完整的二叉树而不是完整的搜索二叉树吗? -
是的,我正在寻找那个
-
嗯,方法很简单:1:为当前节点创建两个子节点; 2:然后通过步骤1的左子节点设置当前节点; 3:重复步骤1直到
array.Legth > 1;如您所见,您将检索所有节点都有 0 或 2 个子节点的完整二叉树。您只需要在代码中更改一个循环并在循环后将最后一个元素添加到当前节点
标签: c# data-structures tree binary-tree