我用 C# 编写了用于实现 AVL_trees 的代码。我遇到了一些节点问题,这就是我无法在节点中插入数据的原因。下面是我的代码。
public class avl_node
{
public int Data;
public avl_node Left;
public avl_node Right;
public int height;
public void DisplayNode()
{
Console.Write("{0}", Data);
}
}
public class avl_tree
{
public avl_node root;
public avl_tree()
{
root = null;
}
public void Insert(int i)
{
avl_node newNode = new avl_node();
newNode.Data = i;
newNode.height = newNode.height + 1;
if (root == null)
{
root = newNode;
}
else
{
avl_node current = root;
avl_node parent;
while (true)
{
parent = current;
if (i < current.Data)
{
current = current.Left;
if (current == null)
{
parent.Left = newNode;
break;
}
else
{
current = current.Right;
if (current == null)
{
parent.Right = newNode;
break;
}
}
}
}
}
}
public void InOrder(avl_node node)
{
if (!(node == null))
{
InOrder(node.Left);
node.DisplayNode();
InOrder(node.Right);
}
}
}
class Program
{
static void Main(string[] args)
{
avl_tree nums = new avl_tree();
nums.Insert(23);
nums.Insert(45);
nums.Insert(16);
nums.Insert(37);
nums.Insert(3);
nums.Insert(99);
nums.Insert(22);
avl_node nd = new avl_node();
nd = nums.Search(37);
Console.WriteLine("Inorder traversal: ");
nums.InOrder(nums.root);
}
}
我得到的只是一个黑色的控制台屏幕。我很困扰。
希望得到更好的回应。
问候乌默尔