/********************************************/
/*★ Binary Tree Object Class 前田 稔 ★*/
/********************************************/
using System;
class console
{
public static void Main()
{ Tree pt = new Tree();
Random rand = new Random();
for(int i=1; i<10; i++) pt.App(rand.Next(100));
pt.Print(pt.Top);
System.Console.ReadLine();
}
}
class Tree
{
Tree car; //前のポインタ
Tree cdr; //後のポインタ
public int val; //データの格納領域
Tree top; //Binary Tree のトップポインタ
//Constructor
public Tree()
{ car = null;
cdr = null;
top = null;
}
//top を取得
public Tree Top
{
get
{
return top;
}
}
//pt の car を取得
public Tree Car(Tree pt)
{ if (pt==null) return null;
return pt.car;
}
//pt の cdr を取得
public Tree Cdr(Tree pt)
{ if (pt==null) return null;
return pt.cdr;
}
//car の末端にセット
public void SetCar(int v)
{ Tree wk;
Tree wp;
wk= new Tree();
wk.val= v;
if (top==null)
{ top= wk;
return;
}
for(wp=top; wp.car!=null; wp=wp.car);
wp.car= wk;
return;
}
//cdr の末端にセット
public void SetCdr(int v)
{ Tree wk;
Tree wp;
wk= new Tree();
wk.val= v;
if (top==null)
{ top= wk;
return;
}
for(wp=top; wp.cdr!=null; wp=wp.cdr);
wp.cdr= wk;
return;
}
//Binary Tree を表示
public void Print(Tree pt)
{ if (pt==null) return;
if (pt.car!=null) Print(pt.car);
Console.WriteLine("{0} ",pt.val);
if (pt.cdr!=null) Print(pt.cdr);
}
//car と cdr に振り分けて登録
public void App(int v)
{ Tree wk;
wk= new Tree();
wk.val= v;
if (top==null)
{ top= wk;
return;
}
app(top,wk);
}
//Binary Tree に TREE を一件追加登録
void app(Tree pt, Tree wk)
{
if (pt.val > wk.val)
{ if (pt.car==null)
{ pt.car= wk;
return;
}
app(pt.car,wk);
return;
}
else
{ if (pt.cdr==null)
{ pt.cdr= wk;
return;
}
app(pt.cdr,wk);
return;
}
}
}
|