您的位置:首页 > 理论基础 > 数据结构算法

C#实现二叉树数据结构以及先序、中序、后续遍历

2009-05-19 08:43 871 查看
/// <summary>
/// 二叉树节点类
/// </summary>
public class BinNode
{
//二叉树的值
private int value;
//二叉树的左子节点
private BinNode left;
//二叉树的右子节点
private BinNode right;
//构造
public BinNode(int value, BinNode left, BinNode right)
{

//base();
this.value = value;
this.left = left;
this.right = right;
}
/// <summary>
/// 取得左子节点
/// </summary>
/// <returns></returns>
public BinNode GetLeft()
{

return left;

}
/// <summary>
/// 取得右子节点
/// </summary>
/// <returns></returns>
public BinNode GetRight()
{

return right;

}
/// <summary>
/// 在控制台输出节点值
/// </summary>
public void PrintValue()
{
Console.WriteLine(value);
}
}

========================================================================
/// <summary>
/// 二叉树类
/// </summary>
public class BinTree
{
private BinNode root;
/// <summary>
/// 取得根节点
/// </summary>
/// <returns></returns>
public BinNode GetRoot()
{

return root;

}
/// <summary>
/// 构造
/// </summary>
/// <param name="root"></param>
public BinTree(BinNode root)
{

this.root = root;

}
/// <summary>
/// 先序遍历
/// </summary>
/// <param name="node"></param>
public void BeforeList(BinNode node)
{

if (node != null)
{
node.PrintValue();//先访问根
BeforeList(node.GetLeft());//然后递归访问左子节点
BeforeList(node.GetRight());//最后递归访问右子节点
}

}
/// <summary>
/// 中序遍历
/// </summary>
/// <param name="node"></param>
public void MiddleList(BinNode node)
{

if (node != null)
{

MiddleList(node.GetLeft());//先递归访问左子节点
node.PrintValue();//然后访问根
MiddleList(node.GetRight());//最后递归访问右子节点
}

}
/// <summary>
/// 后续遍历
/// </summary>
/// <param name="node"></param>
public void AfterList(BinNode node)
{

if (node != null)
{
AfterList(node.GetLeft());//先递归访问左子节点
AfterList(node.GetRight());//然后递归访问右子节点
node.PrintValue();//最后访问根
}
}

}

===========================================================

static void Main(string[] args)
{
//创建二叉树节点

BinNode nine = new BinNode(9,null,null);
BinNode eight = new BinNode(8,null,null);
BinNode seven = new BinNode(7,eight,nine);
BinNode three = new BinNode(3,seven,null);
BinNode five = new BinNode(5,null,null);
BinNode six = new BinNode(6,null,null);
BinNode two = new BinNode(2,five,six);
BinNode one = new BinNode(1,two,three);

//实例化二叉树
BinTree tree = new BinTree(one);
//先序遍历
Console.WriteLine("先序遍历");
tree.BeforeList(tree.GetRoot());
//中序遍历
Console.WriteLine("中序遍历");
tree.MiddleList(tree.GetRoot());
//后序遍历
Console.WriteLine("后序遍历");
tree.AfterList(tree.GetRoot());

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐