二叉树遍历算法实现

class node<T> { T data; node<T> Lnode, Rnode, Pnode; public T Data { get { return data; } set { data = value; } } public node<T> LNode { get { return Lnode; } set { Lnode = value; } } public node<T> RNode { get { return Rnode; } set { Rnode = value; } } public node<T> PNode { get { return Pnode; } set { Pnode = value; } } public node(){} public node(T data) { this.data = data; } static void PreOrder<T>(node<T> rootNode) { Console.WriteLine(rootNode.data); PreOrder<T>(rootNode.LNode); PreOrder<T>(rootNode.RNode); } static node<string> BinTree() { node<string>[] binTree = new node<string>[8]; //创建结点 binTree[0] = new node<string>("A"); binTree[1] = new node<string>("B"); binTree[2] = new node<string>("C"); binTree[3] = new node<string>("D"); binTree[4] = new node<string>("E"); binTree[5] = new node<string>("F"); binTree[6] = new node<string>("G"); binTree[7] = new node<string>("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]; } #region 中序遍历二叉树 static void MidOrder<T>(node<T> rootNode) { if (rootNode != null) { MidOrder<T>(rootNode.LNode); Console.WriteLine(rootNode.Data); MidOrder<T>(rootNode.RNode); } } #endregion #region 后序遍历二叉树 static void AfterOrder<T>(node<T> rootNode) { if (rootNode != null) { AfterOrder<T>(rootNode.LNode); AfterOrder<T>(rootNode.RNode); Console.WriteLine(rootNode.Data); } } #endregion #region 层次遍历二叉树 static void LayerOrder<T>(node<T> rootNode) { node<T>[] Nodes = new node<T>[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; } } } #endregion }

见原文:http://www.cnblogs.com/xuanfeng/archive/2006/09/20/509897.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值