我已經在C#中編寫了用於實現AVL_trees的代碼。我遇到了一些節點問題,這就是爲什麼我無法在節點中插入數據的原因。以下是我的代碼。無法在avl_tree中添加節點
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);
}
}
我得到的只是一個黑色的控制檯屏幕。我很困擾。
希望能有更好的迴應。
問候 烏默爾
你的'Search'函數是什麼樣的?如果你在主函數的每一行之間放置打印語句,哪一行會停止? – Xymostech 2013-05-05 00:31:13
@Xymostech忘記搜索功能。我忘了評論該行。由於整個代碼已被註釋掉,該行對程序沒有影響!我不知道爲什麼我無法在控制檯窗口上獲得任何東西! – 2013-05-05 00:41:17