【发布时间】:2016-02-20 06:32:27
【问题描述】:
注意:这是一项家庭作业,我只希望得到指导。那我不要求任何其他帮助。
我查看了如何在 C# 中的二叉搜索树中添加节点,但我得到了非常不同类型的答案。所以,假设我有节点类:
class Node
{
public int value;
public Node left;
public Node right;
public Node(int v)
{
value = v;
left = right = null;
}
}
而我的 add 函数所在的类是:
class BST
{
public void addNode(int x, Node root)
{
Node newNode = new Node(x);
if (root == null)
{
root = newNode;
}
if (root.value == newNode.value)
{
return;
}
else if (newNode.value < root.value)
{
if (root.left == null)
{
root.left = newNode;
}
else
{
addNode(x, root.left);
}
}
else if (newNode.value > root.value)
{
if (root.right == null)
{
root.right = newNode;
}
else
{
addNode(x, root.right);
}
}
}
}
所以我现在的问题是:我很确定我的大部分逻辑都是正确的,但我怀疑的是,当我递归调用函数时,我不确定树是否真的要使用左子树那个递归调用。还是我做对了?
【问题讨论】:
-
我认为现在是了解breakpoints 的好时机,通过这些,您可以逐步检查每一行代码,以确保它正在执行您认为正在执行的操作。 (顺便说一句:如果它不等于且不小于,那么它必须大于所以你可以使用
else而不是else if) -
您可能会对单元测试感兴趣(例如NUnit、VS-UnitTest)。有了这个,您可以检查是否所有星座都得到了适当的处理。在这种情况下,您知道您的代码有效。
-
我会查一下 Sayse,谢谢你的提示!
标签: c# binary-search-tree