杂七杂八——C#实现二叉树,外带中序遍历
2008-08-06 15:55
288 查看
杂七杂八——C#实现二叉树,外带中序遍历
发现用C#语法实现数据结构的时候,代码显得干净利落,嘻嘻。
using System;
namespace BinaryTree
{
// Binary Tree的结点类
class Node
{
public int Data { get; set; }
public Node LeftSubNode { get; set; }
public Node RightSubNode { get; set; }
// 结点为自己追加子结点(与向左/向右追加结合,形成递归)
public void Append(Node subNode)
{
if (subNode.Data <= this.Data)
{
this.AppendLeft(subNode);
}
else
{
this.AppendRight(subNode);
}
}
// 向左追加
public void AppendLeft(Node subNode)
{
if (this.LeftSubNode == null)
{
this.LeftSubNode = subNode;
}
else
{
this.LeftSubNode.Append(subNode);
}
}
// 向右追加
public void AppendRight(Node subNode)
{
if (this.RightSubNode == null)
{
this.RightSubNode = subNode;
}
else
{
this.RightSubNode.Append(subNode);
}
}
// 结点显示自己的数据
public void ShowData()
{
Console.WriteLine("Data={0}", this.Data);
}
}
// Binary Tree类
class Tree
{
// 根结点
public Node Root { get; set; }
// 以某结点为起点,插入结点
public void Insert(Node newNode)
{
if (this.Root == null)
{
this.Root = newNode;
}
else
{
this.Root.Append(newNode);
}
}
// 重载,默认以根结点为起点插入
public void MidTravel()
{
this.MidTravel(this.Root);
}
// 中序遍历(递归)
public void MidTravel(Node node)
{
if (node.LeftSubNode != null)
{
this.MidTravel(node.LeftSubNode);
}
node.ShowData();
if (node.RightSubNode != null)
{
this.MidTravel(node.RightSubNode);
}
}
}
class Program
{
static void Main(string[] args)
{
Tree tree = new Tree();
tree.Insert(new Node { Data = 3 });
tree.Insert(new Node { Data = 6 });
tree.Insert(new Node { Data = 2 });
tree.Insert(new Node { Data = 7 });
tree.Insert(new Node { Data = 18 });
tree.MidTravel();
}
}
}
// 水之真谛
// http://blog.csdn.net/FantasiaX
发现用C#语法实现数据结构的时候,代码显得干净利落,嘻嘻。
using System;
namespace BinaryTree
{
// Binary Tree的结点类
class Node
{
public int Data { get; set; }
public Node LeftSubNode { get; set; }
public Node RightSubNode { get; set; }
// 结点为自己追加子结点(与向左/向右追加结合,形成递归)
public void Append(Node subNode)
{
if (subNode.Data <= this.Data)
{
this.AppendLeft(subNode);
}
else
{
this.AppendRight(subNode);
}
}
// 向左追加
public void AppendLeft(Node subNode)
{
if (this.LeftSubNode == null)
{
this.LeftSubNode = subNode;
}
else
{
this.LeftSubNode.Append(subNode);
}
}
// 向右追加
public void AppendRight(Node subNode)
{
if (this.RightSubNode == null)
{
this.RightSubNode = subNode;
}
else
{
this.RightSubNode.Append(subNode);
}
}
// 结点显示自己的数据
public void ShowData()
{
Console.WriteLine("Data={0}", this.Data);
}
}
// Binary Tree类
class Tree
{
// 根结点
public Node Root { get; set; }
// 以某结点为起点,插入结点
public void Insert(Node newNode)
{
if (this.Root == null)
{
this.Root = newNode;
}
else
{
this.Root.Append(newNode);
}
}
// 重载,默认以根结点为起点插入
public void MidTravel()
{
this.MidTravel(this.Root);
}
// 中序遍历(递归)
public void MidTravel(Node node)
{
if (node.LeftSubNode != null)
{
this.MidTravel(node.LeftSubNode);
}
node.ShowData();
if (node.RightSubNode != null)
{
this.MidTravel(node.RightSubNode);
}
}
}
class Program
{
static void Main(string[] args)
{
Tree tree = new Tree();
tree.Insert(new Node { Data = 3 });
tree.Insert(new Node { Data = 6 });
tree.Insert(new Node { Data = 2 });
tree.Insert(new Node { Data = 7 });
tree.Insert(new Node { Data = 18 });
tree.MidTravel();
}
}
}
// 水之真谛
// http://blog.csdn.net/FantasiaX
相关文章推荐
- 杂七杂八——C#实现二叉树,外带中序遍历
- C#实现二叉树,外带中序遍历
- C#实现二叉树,外带中序遍历
- C#实现二叉树外带中序遍历(转载)
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- C# 实现二叉树各种排序
- 用stack实现二叉树的中序遍历
- C#实现二叉树数据结构以及先序、中序、后续遍历
- C#实现二叉树的遍历
- 二叉树的中序遍历实现
- C#实现二叉树、单链表、反向链表和stack栈(整理)
- java实现二叉树的先序遍历,中序遍历,后序遍历
- 组合模式实现二叉树先序遍历,中序遍历和后序遍历
- C#实现二叉树--二叉链表结构
- C实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树的遍历C实现(非递归)—中序遍历
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- C++实现二叉树 前序遍历, 后序遍历, 中序遍历, 层序遍历(不用递归)