C#二叉树简易实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
public class nodes<T>
{
T data;
nodes<T> Lnode, Rnode, Pnode; public T Data //中
{
set { data = value; }
get { return data; }
} public nodes<T> LNode //左
{
get { return Lnode; }
set { Lnode = value; }
}
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;
} //先序遍历
public static void PreOrder<T>(nodes<T> rootNode)
{
if (rootNode != null)
{
Console.WriteLine(rootNode.Data);
PreOrder<T>(rootNode.LNode);
PreOrder<T>(rootNode.RNode);
}
}
//中序遍历二叉树
public static void MidOrder<T>(nodes<T> rootNode)
{
if (rootNode != null)
{
MidOrder<T>(rootNode.LNode);
Console.WriteLine(rootNode.Data);
MidOrder<T>(rootNode.RNode);
}
} //后续遍历二叉树
public static void AfterOrder<T>(nodes<T> rootNode)
{
if (rootNode != null)
{
AfterOrder<T>(rootNode.LNode);
AfterOrder<T>(rootNode.RNode);
Console.WriteLine(rootNode.Data);
}
}
//层次遍历
public 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;
}
}
} //构造一颗已知的二叉树
public 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[];
} }
static void Main(string[] args)
{
nodes<string> rootNode = nodes<string>.BinTree(); Console.WriteLine("先序遍历二叉树");
nodes<string>.PreOrder(rootNode);
Console.WriteLine("中序遍历二叉树");
nodes<string>.MidOrder(rootNode);
Console.WriteLine("后序遍历二叉树");
nodes<string>.AfterOrder(rootNode);
Console.WriteLine("层次遍历二叉树");
nodes<string>.LayerOrder(rootNode);
Console.Read();
} }
}
C#二叉树简易实例的更多相关文章
- 利用python检测色情图片简易实例
import sys import os import _io from collections import namedtuple from PIL import Image class Nude( ...
- JAVA实现二叉树(简易版--实现了二叉树的各种遍历)
1,个人感觉二叉树的实现主要还是如何构造一颗二叉树.构造二叉树函数的设计方法多种多样,本例采用 addNode 方法实现.以下程序通过定义内部类来表示二叉树的结点,然后再实现了二叉树这种数据结构的一些 ...
- python测试rabbitmq简易实例
生产者 import pika #coding=utf8 credentials = pika.PlainCredentials('guest', '密码') connection = pika.Bl ...
- Vue组件实例间的直接访问
前面的话 有时候需要父组件访问子组件,子组件访问父组件,或者是子组件访问根组件. 在组件实例中,Vue提供了相应的属性,包括$parent.$children.$refs和$root,这些属性都挂载在 ...
- 数据结构(DataStructure)与算法(Algorithm)、STL应用
catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...
- C语言范例学习03-下
树与图 3.5 二叉树及其应用 PS:二叉树是最经典的树形结构,适合计算机处理,具有存储方便和操作灵活等特点,而且任何树都可以转换成二叉树. 实例101 二叉树的递归创建 实例102 二叉树的遍历 问 ...
- php class类的用法详细总结
以下是对php中class类的用法进行了详细的总结介绍,需要的朋友可以过来参考下 一:结构和调用(实例化): class className{} ,调用:$obj = new className(); ...
- 使用React Native来撰写跨平台的App
React Native 是一个 JavaScript 的框架,用来撰写实时的.可原生呈现 iOS 和 Android 的应用.其是基于 React的,而 React 是 Facebook 的用于构建 ...
- canvas粒子系统的构建
前面的话 本文将从最基本的imageData对象的理论知识说开去,详细介绍canvas粒子系统的构建 效果演示 下面是实例效果演示,博文结尾有全部源码 imageData 关于图像数据imageDat ...
随机推荐
- 天气预报的Ajax效果
最近在网站上看了很多显示实时天气预报的,挺实用而且用户体验也不错.对用户的帮助也比较大,用户可以通过你的网站了解到实时的天气信息.感觉比较有意思,于是自己钻研了一下其中的实现方法.于是决定把代码分享给 ...
- Android模拟神器——Genymotion
文章地址:http://ryantang.me/blog/2013/08/16/genymotion/
- which命令(转)
原文:http://www.cnblogs.com/peida/archive/2012/11/08/2759805.html 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一 ...
- mac系统下ionic环境配置
本人是在mac环境下进行配置的: 下载nodejs:https://nodejs.org/download/ 并双击安装 Cordova and Ionic command-line tools 安装 ...
- javaScriptObject转String
function obj2str(o){ var r = []; if(typeof o =="string") return "\""+o.repl ...
- plsql 存储过程 测试
plsql 存储过程 测试 CreationTime--2018年8月14日09点54分 Author:Marydon 1.找到要运行的存储过程-->选中-->右键-->测试 2 ...
- 通过Java发送邮件和接收邮件的工具类
一.第一种 使用SMTP协议发送电子邮件 第一步:加入mail.jar包 (1)简单类型 package com.souvc.mail; import java.util.Date; import j ...
- 腾讯云-搭建 Python 开发环境
搭建 Python 开发环境 准备工作 任务时间:5min ~ 10min Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.首先我们来看看系统中是否已经存在 Python ,并安装 ...
- Matlab调用返回游标的存储过程的分析和处理
2.Matlab调用Oracl带游标参数输出的存储过程 笔者也是将工作之中遇到的问题进行了搜集与整理,才完成该文的编写,希望能帮助到有需要的朋友. 2.1.PLSQL中的存储过程 PROCEDURE ...
- java测试Unicode编码以及数组的运用(初学篇)
/*第二章第四小题*/ /* * (1)编写一个应用程序,给出汉字“你” ,“我”,“他”在Unicode 表中的位置 * (2)编写一个java应用程序,输出全部的希腊字母 */ public cl ...