展开全部
using System ;
using System.Collections.Generic;
using System .Text;
namespace structure
{
class Program
{
class nodes
{
T data;
nodes Lnode,rnode,pnode;
public T Data
{
get {return data;}
set{data =value;}
}
public nodesLNode
{
get {return Lnode ;}
set {Lnode =value;}
}
public nodesRNode
{
get {return rnode ;}
set {rnode =value;}
}
public nodesPNode
{
get {return pnode ;}
set {pnode =value;}
}
public nodes(){}
public nodes(T data)
{
this.data =data ;
}
}
//构造一棵已知的e68a843231313335323631343130323136353331333335333665二叉树
static nodesBinTree()
{
nodes[] binTree=new nodes[8];
//创建节点
binTree [0]=new nodes ("A");
binTree [1]=new nodes ("B");
binTree [2]=new nodes ("C");
binTree [3]=new nodes ("D");
binTree [4]=new nodes ("E");
binTree [5]=new nodes ("F");
binTree [6]=new nodes ("G");
binTree [7]=new nodes ("H");
//使用层次遍历二叉树的思想,构造一个已知的二叉树
binTree [0].LNode=binTree [1];
binTree [0].RNode=binTree [2];
binTree [1].RNode =binTree [3];
binTree [2].LNode=binTree [4];
binTree [2].RNode=binTree [5];
binTree [3].LNode =binTree [6];
binTree[3].RNode=binTree [7];
//返回二叉树根节点
return binTree [0];
}
//先序遍历
static void PreOrder(nodes rootNode)
{
if(rootNode !=null )
{
Console.WriteLine(rootNode.Data);
PreOrder (rootNode.LNode );
PreOrder (rootNode.RNode);
}
}
//中序遍历二叉树
static void MidOrder(nodes rootNode)
{
if (rootNode != null)
{
MidOrder(rootNode.LNode);
Console.WriteLine(rootNode.Data);
MidOrder(rootNode.RNode);
}
}
//后序遍历二叉树
static void AfterOrder(nodes rootNode)
{
if (rootNode != null)
{
AfterOrder(rootNode.LNode);
AfterOrder(rootNode.RNode);
Console.WriteLine(rootNode.Data);
}
}
//层次遍历二叉树
static void LayerOrder(nodes rootNode)
{
nodes[] Nodes = new nodes[20];
int front = -1;
int rear = -1;
if (rootNode != null)
{
rear++;
Nodes[rear] = rootNode;
}
while (front != rear)
{
front++;
rootNode = Nodes[front];
Console.WriteLine(rootNode.Data);
if (rootNode.LNode != null)
{
rear++;
Nodes[rear] = rootNode.LNode;
}
if (rootNode.RNode != null)
{
rear++;
Nodes[rear] = rootNode.RNode;
}
}
}
//测试的主方法
static void Main(string[] args)
{
nodes rootNode = BinTree();
Console.WriteLine("先序遍历方法遍历二叉树:");
PreOrder(rootNode);
Console.WriteLine("中序遍历方法遍历二叉树:");
MidOrder(rootNode);
Console.WriteLine("后序遍历方法遍历二叉树:");
AfterOrder(rootNode);
Console.WriteLine("层次遍历方法遍历二叉树:");
LayerOrder(rootNode);
Console.Read();
}
}
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起