Вот озадачили нас в школе написанием класса построения бинарного дерева.
Задание я вроде выполнил. Но что-то там не так. А сам углядеть не могу. И время уже поджимает.
Посмотрите, покритикуйте, укажите на ошибки.
- Код: Выделить всё
using System;
using System.Collections;
namespace Oef18_BinaryTree_
{
public class clKnoop //knoop=узел
{
//attributen
private IComparable key;
private Object data; //переменная data типа Object
private clKnoop knptLeft; //левый узел
private clKnoop knptRight; //правый узел
private clKnoop knptParent; //родительский узел, текущего узла
//constructors
public clKnoop()
{
knptLeft=null;
knptRight=null;
knptParent=null;
}
public clKnoop(IComparable sleutel, Object objData)
{
key=sleutel; //sleutel = ключ
data=objData;
knptLeft=null;
knptRight=null;
knptParent=null;
}
//methods
//
//процудура добавляем узел, параметры: ключ, данные типа Object
public void Add(IComparable sl, Object info) // sl = ключ
{
int result=0;
//создали экземпляр класса узел
clKnoop node=new clKnoop();
//сделали его текущим узлом
clKnoop curent=this;
//пка текущий узел не ноль
while(curent!=null)
{
//присвоили текущее значение свойству узла
node.knptParent=curent;
//сравнили значение ключа со значением ключа текущего узла
result=sl.CompareTo(curent.key);
//если ключ больше текущего идем на право
if(result>0)
curent=curent.knptRight;
// или если меньше идем на лево
else
curent=curent.knptLeft;
}
//переопределяем значение ключа для сравнения.
node.key=sl;
//записываем данные в текущий узел.
node.data=info;
//если родительский узел существует, то
if(node.knptParent!=null)
{
//сравниваем ключ узла с ключом родителя
result=node.key.CompareTo(node.knptParent.key);
}
// в результате сравнения переопределяем узел
if(result>0)
node.knptParent.knptRight=node;
else
node.knptParent.knptLeft=node;
}
public object GetData(IComparable sleutel)
{
int result;
Object info=null;
clKnoop treenode=this;
while(treenode!=null && info==null)
{
result=sleutel.CompareTo(treenode.key);
if(result==0)
info=treenode.data;
if(result<0)
treenode=treenode.knptLeft;
else
treenode=treenode.knptParent;
}
return info;
}
}
}
Заранее спасибо.