多叉树的前序遍历_急求: C# 源码, 多叉树的前序遍历

本文展示了如何用C#实现多叉树的前序遍历,包括定义节点类,创建二叉树,以及前序遍历的具体代码实现。此外,还提供了中序、后序和层次遍历的代码作为参考。
摘要由CSDN通过智能技术生成

展开全部

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();

}

}

}

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值