算法不会,尚能饭否之树(2)
前一篇博文《算法不会,尚能饭否之树( 1 )》主要讲的是树的一些概念,讲的也不是很全,只是把一些基本的,比较重要的,常用的概念总结了,同时,还有一些别的概念,还需要大家自己下去总结,理解!而本篇博文主要讲的是树的一些基本操作的实现。让大家明白如何去建立一棵树,如何对树进行一些基本的操作。希望看完本博文,对你有用。好了,伙计,有钱的捧个钱场,没钱的捧个人场。让我们现在就开始今天的博客文章之树之旅。
首先,我建立的二叉树是用二叉链表存储的。这个是前提!我没有那么纠结去用三叉链表实现,很麻烦,你懂得,如果要实现某些功能,貌似必须用三叉链表了。不过那些都是后话了(其实,我也不知道是不是后话)。好了,进入课题吧, Guys !
对二叉树进行操作,没有一个颗二叉树,就是你做了很多,那也是没有用的,是吧!对了,所以我们首先开始建立一个二叉树。
建立二叉树的代码如下:
// 用递归的方法建立二叉树
void BinaryTree::CreateBinaryTree(Node *root) { if (Root == NULL) { Root = new Node; cout<<"请输入根节点的值:"; cin>>Root->value; //判断根节点的值得有效性,如果为-1,则为无效,这个值可以根据需要在后期进行 //改,如果值为无效,则删除建立的根节点,再从新赋值为空 if (Root->value == -1) { cout<<"错误的值,请重新操作!"<<endl; delete Root; Root = NULL; return; } root = Root; } //建立根节点之后建立别的节点 if (root->value != -1) { Node *LNode = new Node; cout<<"请输入左节点的值:"; cin>>LNode->value; CreateBinaryTree(root->lLink = LNode); Node *RNode = new Node; cout<<"请输入右节点的值:"; cin>>RNode->value; CreateBinaryTree(root->rLink = RNode); } }
是吧,伙计,注释那是非常的详细。没有像本山大叔那样的,此处省略多少字的!至少我会写来上一句,此处省略一行代码,或者此处省略一行注释,让你猜去吧。不,我不会那么做的,因为你是我的读者!对吧。朋友。
代码就在眼前,别的我就不多说了,如何实现,应该很容易看懂的,哦,对的,是用递归,你应该知道的。你很聪明,同时,你也该清楚每一个结束的节点的值都是 -1 ,是吧,伙计。还有一个问题是,如何在黑白屏下出入建立二叉树的节点值呢?来,不要着急,我给大家演示一下。
3
2 5
6 -1 8 9
-1 -1 -1 -1 -1 -1
如图,你要建立一个含有 3 、 2 、 5 、 6 、 8 、 9 的二叉树,你必须这样输入。如果你问我为什么?我会说,请你去看程序去,还有我会说这是我的程序,你就得这么输入,可以了吗?我比较喜欢横行霸道。哈哈哈。在 DOS 下这样输入: 3 、 2 、 6 、 -1 、 -1 、 -1 、 5 、 8 、 -1 、 -1 、 9 、 -1 、 -1 。是的,就是这样输入,这样输入,你就可以建立上图的二叉树,但是在对二叉树进行计算,或者操作时,都不会对值为 -1 的节点进行操作的。值为 -1 的节点只是一个结束的标志,其实你是可以改的。一般建立二叉树用递归的方法,都必须设立一个递归的层次的结束标志,而我的正好就是 -1. 现在懂了吧。哦,你也该懂了,不是我的霸道。
还有一些其他的操作,我就不一一讲解,是的,很费时间的。因为我要去睡觉了,我把代码下载地址贴上,代码就在 csdn 上下载。
下载地址:http://download.csdn.net/source/3173149
注:本博文的任何 C++ 程序都是在 visual studio 2008 由本人亲自编译通过。如有问题,请使用 visual studio 2008.
如对代码有疑问或者一些不懂的问题,请留言,跟帖提出。谢谢,你我共同进步!
转载于:https://www.cnblogs.com/JPAORM/archive/2011/04/08/2509891.html
算法不会,尚能饭否之树(2)相关推荐
- 算法不会,尚能饭否之树(1)
这篇博文主要讲的是树的基本概念,是为后一篇博文做基础的.后一篇博文将主要是实现树的算法. 1 :树是由 n ( n>=0 )个节点组成的有限集合. 2 :每个子树的根节点有且仅有一个直接前驱,但 ...
- 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...
- SPH算法(求最小代价树)
一.sph算法简介 1.最小代价树算法 SPH算法也叫做MPH( minimum path heuristic)算法, 用于构造时延约束最算法小代价组播树. 该算法中每 个目的结点通过与当前组播树有最 ...
- 我的软考之路(四)——数据结构与算法(2)之树与二叉树
上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构-树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结. 树为了 ...
- 数据挖掘十大经典算法--CART: 分类与回归树
一.决策树的类型 在数据挖掘中,决策树主要有两种类型: 分类树 的输出是样本的类标. 回归树 的输出是一个实数 (例如房子的价格,病人呆在医院的时间等). 术语分类和回归树 (CART) 包含了上述 ...
- 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)
数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...
- 算法导论 van Emde Boas 树
算法导论 van Emde Boas 树 结构 vEB(u)表示全域值为{0,1,2,-,u-1} vEB 树 min 表示 vEB 树中最小值,该值元素不出现在任何递归的子树(簇) vEB(u↓\s ...
- 漫画算法:什么是 B+ 树?
https://mp.weixin.qq.com/s/QGepgMbHQ8JeRxVQwAwsxQ 漫画算法:什么是 B+ 树? 2017-07-14 程序员的那些事 (点击上方公众号,可快速关注) ...
- 【数据结构与算法】-哈夫曼树(Huffman Tree)与哈夫曼编码
超详细讲解哈夫曼树(Huffman Tree)以及哈夫曼编码的构造原理.方法,并用代码实现. 1哈夫曼树基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径. 结点的路径长度:两 ...
最新文章
- CES Asia专题|微鹅展示无线充电,智能手机的无线充电时代何时来临?
- mysql统计今日首充用户_电商用户行为MySQL分析
- IB客座主编(一)--安普布线亚太区业务总监黎启枝
- php 数学基础,第四章 php数学运算
- 不要自称是程序员,我十多年的 IT 职场总结
- c# 注册表.代码示例.(迭代遍历注册表)[Demo]
- jQuery实现复选框的全选和反选:
- Netty 5.X 官方指南翻译版7
- CSS美化超链接样式
- 硬盘保修期网上轻松查询
- (转载)0201 0402 0603 0805 1206焊盘封装尺寸
- 王之泰201771010131《面向对象程序设计(java)》第十四周学习总结
- 龙芯计算机价格,龙芯电脑目标售价有望逼近1000元
- JS,等额本息,等额本金计算器
- java 九九乘法口诀
- 房租客手机端个人中心html页面
- Time Freeze 时间冻结 影子系统
- Docker - compose 邂逅
- 20210325BERNESE软件中LEO_POD模块说明
- 【Android Gradle 插件】DexOptions 配置 ② ( additionalParameters 属性配置 | dx 工具 | dx 附加参数 )