前一篇博文《算法不会,尚能饭否之树( 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)

    这篇博文主要讲的是树的基本概念,是为后一篇博文做基础的.后一篇博文将主要是实现树的算法. 1 :树是由 n ( n>=0 )个节点组成的有限集合. 2 :每个子树的根节点有且仅有一个直接前驱,但 ...

  2. 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树

    数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...

  3. SPH算法(求最小代价树)

    一.sph算法简介 1.最小代价树算法 SPH算法也叫做MPH( minimum path heuristic)算法, 用于构造时延约束最算法小代价组播树. 该算法中每 个目的结点通过与当前组播树有最 ...

  4. 我的软考之路(四)——数据结构与算法(2)之树与二叉树

    上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构-树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结. 树为了 ...

  5. 数据挖掘十大经典算法--CART: 分类与回归树

    一.决策树的类型  在数据挖掘中,决策树主要有两种类型: 分类树 的输出是样本的类标. 回归树 的输出是一个实数 (例如房子的价格,病人呆在医院的时间等). 术语分类和回归树 (CART) 包含了上述 ...

  6. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  7. 算法导论 van Emde Boas 树

    算法导论 van Emde Boas 树 结构 vEB(u)表示全域值为{0,1,2,-,u-1} vEB 树 min 表示 vEB 树中最小值,该值元素不出现在任何递归的子树(簇) vEB(u↓\s ...

  8. 漫画算法:什么是 B+ 树?

    https://mp.weixin.qq.com/s/QGepgMbHQ8JeRxVQwAwsxQ 漫画算法:什么是 B+ 树? 2017-07-14 程序员的那些事 (点击上方公众号,可快速关注) ...

  9. 【数据结构与算法】-哈夫曼树(Huffman Tree)与哈夫曼编码

    超详细讲解哈夫曼树(Huffman Tree)以及哈夫曼编码的构造原理.方法,并用代码实现. 1哈夫曼树基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径. 结点的路径长度:两 ...

最新文章

  1. CES Asia专题|微鹅展示无线充电,智能手机的无线充电时代何时来临?
  2. mysql统计今日首充用户_电商用户行为MySQL分析
  3. IB客座主编(一)--安普布线亚太区业务总监黎启枝
  4. php 数学基础,第四章 php数学运算
  5. 不要自称是程序员,我十多年的 IT 职场总结
  6. c# 注册表.代码示例.(迭代遍历注册表)[Demo]
  7. jQuery实现复选框的全选和反选:
  8. Netty 5.X 官方指南翻译版7
  9. CSS美化超链接样式
  10. 硬盘保修期网上轻松查询
  11. (转载)0201 0402 0603 0805 1206焊盘封装尺寸
  12. 王之泰201771010131《面向对象程序设计(java)》第十四周学习总结
  13. 龙芯计算机价格,龙芯电脑目标售价有望逼近1000元
  14. JS,等额本息,等额本金计算器
  15. java 九九乘法口诀
  16. 房租客手机端个人中心html页面
  17. Time Freeze 时间冻结 影子系统
  18. Docker - compose 邂逅
  19. 20210325BERNESE软件中LEO_POD模块说明
  20. 【Android Gradle 插件】DexOptions 配置 ② ( additionalParameters 属性配置 | dx 工具 | dx 附加参数 )

热门文章

  1. Eclipse怎样连接并打开oracle等数据库?
  2. spring+mybatis 多数据源切换
  3. android中拷贝assets下的资源文件到SD卡中(可以超过1M)
  4. 【jQuery笔记Part3】01-jQuery-each遍历
  5. 你(wo)不注意的和数据类型有关的小细节
  6. 读书笔记_打开量化投资的黑箱01
  7. 整理了4个B端产品调研网站,不花一分钱获得最全面的产品体验
  8. 注意!这里手把手教你做数据运营管理
  9. Object-C使用NSLog打印日志
  10. python和环境变量_python 读取和设置环境变量