知识大全 二叉树遍历算法C#实现

Posted 结点

篇首语:常说口里顺,常做手不笨。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 二叉树遍历算法C#实现相关的知识,希望对你有一定的参考价值。

二叉树遍历算法C#实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  用C# 实现了二叉树的定义 怎么构造一颗已知的二叉树 用几种常规的算法(先序 中序 后序 层次)遍历二叉树 希望能给有需要人带来帮助 也希望能得到大家的指点 有关C#数据结构的书在书店里找到 网上也是极少 如果你有好的学习资源别忘了告诉我 先谢了 数据结构对一个程序员来说 现在是太重要了 数据结构学得好的人 逻辑思维一定很强 在程序设计的时候 就不会觉得太费劲了 而且是在设计多层应用程序的时候 真是让人绞尽脑汁啊 趁自己还年轻 赶紧练练脑子 哈哈 咱们尽快进入主题吧

  本程序中将用到一棵已知的二叉树如图(二叉树图)所示

  

  下面简单介绍一下几种算法和思路

  先序遍历

   访问根结点

   按先序遍历左子树;

   按先序遍历右子树

   例如 遍历已知二叉树结果为 A >B >D >G >H >C >E >F

  中序遍历

   按中序遍历左子树;

   访问根结点

   按中序遍历右子树

   例如遍历已知二叉树的结果 B >G >D >H >A >E >C >F

  后序遍历

   按后序遍历左子树

   按后序遍历右子树

   访问根结点

   例如遍历已知二叉树的结果 G >H >D >B >E >F >C >A

  层次遍历

   从上到下 从左到右遍历二叉树的各个结点(实现时需要借辅助容器)

   例如遍历已知二叉树的结果 A >B >C >D >E >F >G >H

  附加整个解决方案代码

  二叉遍历算法解决方案

  using System;

  using System Collections Generic;

  using System Text;

  namespace structure

  

  class Program

  

  二叉树结点数据结构的定义#region 二叉树结点数据结构的定义

  //二叉树结点数据结构包括数据域 左右结点以及父结点成员

  class nodes<T>

  

  T data;

  nodes<T> Lnode Rnode Pnode;

  public T Data

  

  set data = value;

  get return data;

  

  public nodes<T> LNode

  

  set Lnode = value;

  get return Lnode;

  

  public nodes<T> RNode

  

  set Rnode = value;

  get return Rnode;

  

  public nodes<T> PNode

  

  set Pnode = value;

  get return Pnode;

  

  public nodes()

  

  public nodes(T data)

  

  this data = data;

  

  

  #endregion

  先序编历二叉树#region 先序编历二叉树

  static void PreOrder<T>(nodes<T> rootNode)

  

  if (rootNode != null)

  

  Console WriteLine(rootNode Data);

  PreOrder<T>(rootNode LNode);

  PreOrder<T>(rootNode RNode);

  

  

  #endregion

  构造一棵已知的二叉树#region 构造一棵已知的二叉树

  static nodes<string> BinTree()

  

  nodes<string>[] binTree = new nodes<string>[ ];

  //创建结点

  binTree[ ] = new nodes<string>( A );

  binTree[ ] = new nodes<string>( B );

  binTree[ ] = new nodes<string>( C );

  binTree[ ] = new nodes<string>( D );

  binTree[ ] = new nodes<string>( E );

  binTree[ ] = new nodes<string>( F );

  binTree[ ] = new nodes<string>( G );

  binTree[ ] = new nodes<string>( H );

  //使用层次遍历二叉树的思想 构造一个已知的二叉树

  binTree[ ] LNode = binTree[ ];

  binTree[ ] RNode = binTree[ ];

  binTree[ ] RNode = binTree[ ];

  binTree[ ] LNode = binTree[ ];

  binTree[ ] RNode = binTree[ ];

  binTree[ ] LNode = binTree[ ];

  binTree[ ] RNode = binTree[ ];

  //返回二叉树的根结点

  return binTree[ ];

  

  #endregion

  中序遍历二叉树#region 中序遍历二叉树

  static void MidOrder<T>(nodes<T> rootNode)

  

  if (rootNode != null)

  

  MidOrder<T>(rootNode LNode);

  Console WriteLine(rootNode Data);

  MidOrder<T>(rootNode RNode);

  

  

  #endregion

  后序遍历二叉树#region 后序遍历二叉树

  static void AfterOrder<T>(nodes<T> rootNode)

  

  if (rootNode != null)

  

  AfterOrder<T>(rootNode LNode);

  AfterOrder<T>(rootNode RNode);

  Console WriteLine(rootNode Data);

  

  

  #endregion

  层次遍历二叉树#region 层次遍历二叉树

  static void LayerOrder<T>(nodes<T> rootNode)

  

  nodes<T>[] Nodes = new nodes<T>[ ];

  int front = ;

  int rear = ;

  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

  测试的主方法#region 测试的主方法

  static void Main(string[] args)

  

  nodes<string> rootNode = BinTree();

  Console WriteLine( 先序遍历方法遍历二叉树 );

  PreOrder<string>(rootNode);

  Console WriteLine( 中序遍历方法遍历二叉树 );

  MidOrder<string>(rootNode);

  Console WriteLine( 后序遍历方法遍历二叉树 );

  AfterOrder<string>(rootNode);

  Console WriteLine( 层次遍历方法遍历二叉树 );

  LayerOrder<string>(rootNode);

  Console Read();

  

  #endregion

  

cha138/Article/program/net/201311/12089

相关参考

知识大全 用栈实现二叉树先序遍历的非递归算法实践题

  /*syc*/  #include  #include  typedefcharDataType;  typedefstructnode  DataTypedata;  structnode*lc

知识大全 数据结构与算法(C#)系列-二叉树

数据结构与算法(C#)系列-二叉树  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSy

知识大全 树 - 二叉树的遍历 (二)

  遍历序列  遍历二叉树的执行踪迹  三种递归遍历算法的搜索路线相同(如下图虚线所示)  具体线路为  从根结点出发逆时针沿着二叉树外缘移动对每个结点均途径三次最后回到根结点  >  遍历序列  (

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (四)[13]

  .设某二叉树的前序遍历序列为:ABCDEFGGI中序遍历序列为:BCAEDGHFI  ()试画出该二叉树  ()写出由给定的二叉树的前序遍历序列和中序遍历序列构造出该二叉树的算法  ()设具有四个

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (四)[19]

  .在二叉树的前序遍历和中序遍历的递归算法中最后一个递归调用语句在调用时所保留的参数有什么作用?如何清除最后这个递归语句?【北京邮电大学三(分)】  .在二叉树的LlinkRlink存储表示中引入线

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (五)[16]

  .写一非递归遍历算法使右图树遍历输出顺序为字母顺序【中国人民大学三(分)】  .二叉树结点的平衡因子(bf)定义为该结点的左子树高度与右子树高度之差设二叉树结点结构为(lchilddatabfrc

知识大全 数据结构之二叉树的遍历

二叉树遍历的基本概念   遍历(Traversal)是指沿着某条搜索路线依次对树中每个结点均做一次且仅做一次访问  从二叉树的递归定义可知二叉树是由三个基本单元组成根结点左子树和右子树因此若能依次遍历

知识大全 二叉树的遍历

遍历概念  所谓遍历(Traversal)是指沿着某条搜索路线依次对树中每个结点均做一次且仅做一次访问访问结点所做的操作依赖于具体的应用问题  遍历是二叉树上最重要的运算之一是二叉树上进行其它运算之基

知识大全 树 - 二叉树的遍历 (一)

  遍历概念  所谓遍历(Traversal)是指沿着某条搜索路线依次对树中每个结点均做一次且仅做一次访问访问结点所做的操作依赖于  具体的应用问题  遍历是二叉树上最重要的运算之一是二叉树上进行其它

知识大全 数据结构 6.2.3 后序遍历二叉树

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  后序遍历二叉树  若二叉树为空则空操作否则  ()后序遍历左子树  ()后序