using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Node
{
private object _data;
private Node left;
private Node right;
private Node _head;
public int data;
private string str;
public object Date
{
get { return _data; }
set { _data = value; }
}
public Node Left
{
get { return left; }
set { left = value; }
}
public Node Right
{
get { return right; }
set { right = value; }
}
public Node(object date)
{
_data = date;
}
public override string ToString()
{
return _data.ToString();
}
public Node Head
{
get { return _head; }
}
public Node(string strs)
{
str = strs;
_head = new Node(str[0]);
Add(_head,0);
}
public void Add(Node prer, int index)
{
int leftIndex = 2 * index + 1;
if(leftIndex<str.Length)
{
if(str[leftIndex]!='#')
{
prer.left = new Node(str[leftIndex]);
Add(prer.left,leftIndex);
}
}
int rightIndex = 2 * index + 2;
if (rightIndex < str.Length)
{
if(str[leftIndex]!='#')
{
prer.right = new Node(str[rightIndex]);
Add(prer.right, rightIndex);
}
}
}
public void XianOrder(Node node)
{
if (node != null)
{
Console.WriteLine(node.ToString());
XianOrder(node.left);
XianOrder(node.right);
}
}
public void ZhongOrder(Node node)
{
if (node != null)
{
ZhongOrder(node.left);
Console.WriteLine(node.ToString());
ZhongOrder(node.right);
}
}
public void HouOrder(Node node)
{
if (node != null)
{
HouOrder(node.left);
HouOrder(node.right);
Console.WriteLine(node.ToString());
}
}
public Node Search(int i)
{
Node curren = _head;
while (true)
{
if (i < curren.data)
{
if (curren.left == null)
{
break;
curren = curren.left;
}
}
else if (i > curren.data)
{
if (curren.right == null)
{
break;
curren = curren.right;
}
}
else
{
return curren;
}
}
if (curren.data != i)
{
return null;
}
return curren;
}
static void Main(string[] args)
{
Node node = new Node("1234567####8");
node.XianOrder(node._head);
Console.WriteLine();
node.ZhongOrder(node.Head);
Console.WriteLine();
node.HouOrder(node.Head);
Console.WriteLine();
Node n = node.Search(3);
Console.WriteLine("所查的节点是:"+n._data);
Console.Read();
}
怎么在它之上添加查询子节点等方法,