.net画二叉树
代码下载地址:
链接: https://pan.baidu.com/s/1bpHayoJ 密码: k6su
接下来看主要代码
1、先构建二叉树的类
public class Node
{
public int data; //自己本身值
public Node left; //左结点
public Node right; //右结点
public Node()
{
}
public Node(int data, Node left, Node right)
{
this.data = data;
this.left = left;
this.right = right;
}
public int getData()
{
return data;
}
public void setData(int data)
{
this.data = data;
}
public Node getLeft()
{
return left;
}
public void setLeft(Node left)
{
this.left = left;
}
public Node getRight()
{
return right;
}
public void setRight(Node right)
{
this.right = right;
}
}
2、然后构建二叉树
public static List<Node> CreateTree(int[] array)
{
List<Node> list = new List<Node>();
for (int i = ; i < array.Length; i++)
{
Node node = new Node(array[i], null, null); //创建结点,每一个结点的左结点和右结点为null
list.Add(node); // list中存着每一个结点
}
// 构建二叉树
if (list.Count > )
{
for (int i = ; i < array.Length / - ; i++)
{ // i表示的是根节点的索引,从0开始
if (list[ * i + ] != null)
{
// 左结点
list[i].left = list[ * i + ];
}
if (list[ * i + ] != null)
{
// 右结点
list[i].right = list[ * i + ];
}
}
// 判断最后一个根结点:因为最后一个根结点可能没有右结点,所以单独拿出来处理
int lastIndex = array.Length / - ;
// 左结点
list[lastIndex].left = list[lastIndex * + ];
// 右结点,如果数组的长度为奇数才有右结点
if (array.Length % == )
{
list[lastIndex].right = list[lastIndex * + ];
}
}
return list;
}
3、接下来打印二叉树
public static void PrintTree(Node node, int Layer)
{
if (node == null) { return; }
PrintTree(node.right, Layer + );
for (int i = ; i < Layer; i++)
{
Console.Write(" ");
}
Console.WriteLine(node.data);
PrintTree(node.left, Layer + );
}
4、最后是调用
static void Main(string[] args)
{
int[] array = { , , , , , , , ,
,,, , , , , , , , };
List<Node> list = TwoForkedTree.CreateTree(array);
TwoForkedTree.PrintTree(list[], );
Console.ReadLine();
}
运行之后的结果是

.net画二叉树的更多相关文章
- matlab画二叉树
用matlab画如下图的二叉树. 先按树的先序遍历把结点编号,如下图所示. treeplot函数的序列用如下方法得到.从根结点开始先序遍历,依次写下父结点的编号,设根结点的父结点为0.按先序遍历,根结 ...
- 在线生成二叉树(基于EaselJS(canvas))
学习二叉树的时候,老在本子上画二叉树好麻烦.其实就想看下树结构.最近html5蛮火的,就用canvas和EaselJS.js(开发flash公司开发的插件)插件实现了个.大家随便用吧. 这是个什么东西 ...
- 常见基本数据结构——树,二叉树,二叉查找树,AVL树
常见数据结构——树 处理大量的数据时,链表的线性时间太慢了,不宜使用.在树的数据结构中,其大部分的运行时间平均为O(logN).并且通过对树结构的修改,我们能够保证它的最坏情形下上述的时间界. 树的定 ...
- MySQL InnoDB表--BTree基本数据结构
MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据. 我最开始是搞Or ...
- [转帖]Linux下fork函数及pthread函数的总结
Linux下fork函数及pthread函数的总结 https://blog.csdn.net/wangdd_199326/article/details/76180514 fork Linux多进程 ...
- 七大排序的个人总结(二) 归并排序(Merge
七大排序的个人总结(二) 归并排序(Merge 归并排序(Merge Sort): 归并排序是一个相当“稳定”的算法对于其它排序算法,比如希尔排序,快速排序和堆排序而言,这些算法有所谓的最好与最 ...
- AVL-Tree (平衡二叉树)
看到网上AVL-Tree大多数都是用相同的实现方式 —— 递归进行插入.删除.维护平衡等,而我比较喜欢用带父指针的数据结构,于是想了一下午,用C实现了一个迭代版的. 由于没有暂时没有好的画二叉树的工具 ...
- [Visual Basic]二分查找
模板 i=1:j=n 'i初值为1,j初值为n Do while i<=j '当i<=j时,通过循环进行查找 m=fix((i+j)/2) '计算出中间元素的下标m If d(m)=key ...
- LA3403天平难题(4个DFS)
题意: 给出房间的宽度r和每个吊坠的重量wi,设计一个尽量宽但宽度不能超过房间宽度的天平,挂着所有挂坠,每个天平的一段要么挂这一个吊坠,要么挂着另一个天平,每个天平的总长度是1,细节我给出题 ...
随机推荐
- MFC::Visual studio ? 对应VC6-14
VC6VC7: Visual studio.netVC7.1: Visual studio 2003VC8: Visual studio 2005VC9: Visual studio 2008VC10 ...
- Vuex使用总结
Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vuex的五个核心概念 ...
- pytest5-使用conftest.py实现多文件共享fixture
一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用.在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效. ...
- 解决Anki服务器同步问题:坚果云 & Floder sync (已测试)
读前须知: 更新日期:2019-07-08 1.本教程面向对象为:有一定计算机知识人群 2.配合参考链接中的文章,共同食用. 3.已经过测试,可同步图片,音频,视频 4.尝试有风险,提前导出Anki卡 ...
- Leetcode(2)两数相加
Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...
- 小白学 Python(9):基础数据结构(列表)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 从零开始把项目发布到NPM仓库中心
从零开始把项目发布到NPM仓库中心 前期准备 注册账号 https://www.npmjs.com/signup 网易邮箱注册失败,用QQ邮箱成功 使用npm 命令注册(建议使用网页): npm ad ...
- Centos7 安装需要的软件环境
Mysql 安装 下载安装 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-rel ...
- 设计模式(七)Builder模式
Builder模式,从这个名字我们可以看出来,这种设计模式就是用于组装具有复杂结构的实例的. 下面还是以一个实例程序来解释这种设计模式,先看实例程序的类图. 这里为了调试方便,只实现其中一个功能Tex ...
- MacOS 系统 文件夹解析
Mac OS X,基于UNIX核心的系统,增强了系统的稳定性.性能以及响应能力. 通过对称多处理技术充分发挥双处理器的优势,提供无与伦比的2D.3D和多媒体图形性能以及广泛的字体支持和集成的PDA功能 ...