您的位置:首页 > 编程语言 > C#

杂七杂八——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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: