`
lovnet
  • 浏览: 6970557 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

杂七杂八——C#实现二叉树,外带中序遍历

阅读更多

杂七杂八——C#实现二叉树,外带中序遍历

发现用C#语法实现数据结构的时候,代码显得干净利落,嘻嘻。

  1. usingSystem;
  2. namespaceBinaryTree
  3. {
  4. //BinaryTree的结点类
  5. classNode
  6. {
  7. publicintData{get;set;}
  8. publicNodeLeftSubNode{get;set;}
  9. publicNodeRightSubNode{get;set;}
  10. //结点为自己追加子结点(与向左/向右追加结合,形成递归)
  11. publicvoidAppend(NodesubNode)
  12. {
  13. if(subNode.Data<=this.Data)
  14. {
  15. this.AppendLeft(subNode);
  16. }
  17. else
  18. {
  19. this.AppendRight(subNode);
  20. }
  21. }
  22. //向左追加
  23. publicvoidAppendLeft(NodesubNode)
  24. {
  25. if(this.LeftSubNode==null)
  26. {
  27. this.LeftSubNode=subNode;
  28. }
  29. else
  30. {
  31. this.LeftSubNode.Append(subNode);
  32. }
  33. }
  34. //向右追加
  35. publicvoidAppendRight(NodesubNode)
  36. {
  37. if(this.RightSubNode==null)
  38. {
  39. this.RightSubNode=subNode;
  40. }
  41. else
  42. {
  43. this.RightSubNode.Append(subNode);
  44. }
  45. }
  46. //结点显示自己的数据
  47. publicvoidShowData()
  48. {
  49. Console.WriteLine("Data={0}",this.Data);
  50. }
  51. }
  52. //BinaryTree类
  53. classTree
  54. {
  55. //根结点
  56. publicNodeRoot{get;set;}
  57. //以某结点为起点,插入结点
  58. publicvoidInsert(NodenewNode)
  59. {
  60. if(this.Root==null)
  61. {
  62. this.Root=newNode;
  63. }
  64. else
  65. {
  66. this.Root.Append(newNode);
  67. }
  68. }
  69. //重载,默认以根结点为起点插入
  70. publicvoidMidTravel()
  71. {
  72. this.MidTravel(this.Root);
  73. }
  74. //中序遍历(递归)
  75. publicvoidMidTravel(Nodenode)
  76. {
  77. if(node.LeftSubNode!=null)
  78. {
  79. this.MidTravel(node.LeftSubNode);
  80. }
  81. node.ShowData();
  82. if(node.RightSubNode!=null)
  83. {
  84. this.MidTravel(node.RightSubNode);
  85. }
  86. }
  87. }
  88. classProgram
  89. {
  90. staticvoidMain(string[]args)
  91. {
  92. Treetree=newTree();
  93. tree.Insert(newNode{Data=3});
  94. tree.Insert(newNode{Data=6});
  95. tree.Insert(newNode{Data=2});
  96. tree.Insert(newNode{Data=7});
  97. tree.Insert(newNode{Data=18});
  98. tree.MidTravel();
  99. }
  100. }
  101. }
  102. //水之真谛
  103. //http://blog.csdn.net/FantasiaX
分享到:
评论

相关推荐

    C语言实现二叉树的中序遍历(非递归)

    ### C语言实现二叉树的中序遍历(非递归) #### 背景介绍 在计算机科学中,二叉树是一种常见的数据结构,在算法设计与分析领域扮演着极其重要的角色。对于二叉树的操作主要包括查找、插入、删除以及各种形式的遍历...

    C语言实现二叉树的中序遍历(递归)

    ### C语言实现二叉树的中序遍历(递归) #### 一、知识点概述 在计算机科学领域,二叉树是一种重要的数据结构,而遍历则是操作与处理这种数据结构的基本方法之一。二叉树的遍历可以分为三种基本方式:前序遍历、...

    二叉树先序遍历、中序遍历和后序遍历非递归算法 C++源码

    用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法

    数据结构 二叉树的中序遍历

    本实现采用递归方式完成二叉树的中序遍历。递归是一种强大的编程技巧,它通过函数自身调用来解决问题。在二叉树的中序遍历中,递归的步骤如下: 1. **递归左子树**:首先,我们访问左子树。如果左子树存在,就对左...

    C++ 二叉树的先序遍历、中序遍历和后序遍历非递归算法

    用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。

    Java二叉树中序遍历

    本课程设计将详细介绍如何使用Java编程语言实现二叉树的中序遍历。 首先,我们先构建二叉树的节点类(Node),它包含一个数据字段(data)以及指向左子节点(left)和右子节点(right)的引用: ```java public ...

    中序线索化二叉树及中序遍历

    在二叉树的遍历过程中,中序遍历是一种常见的方法,它按照“左-根-右”的顺序访问每个节点。在实际应用中,为了在非递归情况下高效地进行中序遍历,引入了线索二叉树的概念,特别是中序线索化二叉树。 中序线索化...

    二叉树的中序遍历便利算法(C语言)

    通过上述分析,我们可以清楚地了解到二叉树的定义、创建以及中序遍历的实现方法。在实际应用中,二叉树及其遍历算法是非常有用的工具,尤其是在处理具有层级关系的数据时。例如,在搜索引擎中的索引结构、数据库系统...

    二叉树的中序遍历、哈夫曼编码-C语言编写的

    在这个项目中,我们将深入探讨二叉树的中序遍历以及哈夫曼编码,两者都是使用C语言实现的。 **中序遍历** 是二叉树遍历的三种基本方法之一,其余两种为前序遍历和后序遍历。中序遍历遵循以下规则:首先访问左子树,...

    数据结构C++二叉树的先序遍历、中序遍历和后序遍历实现

    数据结构C++二叉链表的先序遍历、中序遍历和后序遍历实现

    二叉树递归中序遍历java

    java编程,二叉树的中序遍历,递归实现

    二叉树进行先序遍历与中序遍历

    标题和描述中提到的任务是实现二叉树的构建、前序遍历和中序遍历。以下是详细的知识点: 1. **二叉树的定义**:二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左孩子和右孩子。二叉树可以为空,...

    二叉树的递归遍历,中序遍历,先序遍历,后序遍历

    我们首先定义了二叉树结点的结构体,然后实现了创建二叉树、先序遍历、中序遍历和后序遍历的函数。最后,我们使用switch语句来选择不同的遍历方式。 在实际应用中,二叉树的遍历有很多应用,如数据库查询、图形遍历...

    二叉树的中序遍历

    实际应用中,你可以在自己的程序中灵活运用这些方法,根据具体需求选择合适的方式实现二叉树的中序遍历。例如,如果你正在编写一个解析表达式树的程序,中序遍历可以帮助你按正确的运算顺序计算表达式。在数据库索引...

    课程设计报告数据结构二叉树遍历演示_二叉树中序遍历怎么看

    **课程设计报告——数据结构中的二叉树遍历演示** 在数据结构课程设计中,二叉树遍历是一项重要的实践任务。二叉树遍历主要包括前序遍历、中序遍历和后序遍历,这三种遍历方法在理解和应用二叉树时具有基础性的地位...

    根据先序与中序遍历结果建立二叉树

    ### 根据先序与中序遍历结果建立二叉树 #### 一、问题背景与定义 在数据结构的学习中,二叉树是一种非常重要的非线性数据结构,广泛应用于计算机科学的多个领域,如搜索算法、编译器设计等。其中,二叉树的遍历是...

    java-leetcode题解之第94题二叉树的中序遍历.zip

    本资源"java-leetcode题解之第94题二叉树的中序遍历.zip"聚焦于LeetCode的第94题——二叉树的中序遍历,通过Java语言来解决这个问题。下面我们将详细讨论这个知识点。 **二叉树的中序遍历** 中序遍历是二叉树遍历的...

    实用《数据结构》编程——二叉树的建立、中序遍历非递归C程序.pdf

    - **算法实现**: 根据中序遍历的算法逻辑,使用栈和指针操作来实现二叉树的非递归遍历。 ### 程序操作流程 1. **建立二叉树**: 根据输入的数据,按照层次顺序依次建立节点,并用指针连接父节点与子节点。 2. **...

    二叉树的中序遍历非递归算法

    利用栈的基本操作实现二叉树的中序遍历非递归算法。

    根据二叉树前序遍历和中序遍历的结果输出后序遍历(java)

    二叉树的遍历是对其进行操作和理解的关键部分,主要包括前序遍历、中序遍历和后序遍历。本话题将详细探讨如何根据给定的二叉树前序遍历和中序遍历的结果,利用Java来输出其后序遍历的序列。 前序遍历的顺序是:根...

Global site tag (gtag.js) - Google Analytics