把有序树改写为对应的二叉树有何意义

论坛 期权论坛 期权     
march_movemove   2018-4-26 13:58   2154   1
分享到 :
0 人收藏

1 个回复

正序浏览
2#
__yuxiaoxi  3级会员 | 2018-4-30 01:56:19 发帖IP地址来自
这个问题又很抽象 有何意义的说。。。
其说来了呢  树有很多种  但那些多是为了抽象表达数据结构的  对于编制良好的算法程序 尤其是要求很高搜索速度和精确匹配的时候  我们经常采用二叉树。因为二叉树非常适合编程实现。你想想啊  计算机中有几种数  只有0和1  正好二叉树只有左孩子和有孩子。。。比喻下。。。呵呵   其实呢  你编程序  最希望看到的就是有良好结构特性的数据。。。如果仅仅是有序树  那好  我一个节点可能有八个孩子  另一个节点可能就两个孩子  再下一个节点可能就十个孩子 再下个节点就没孩子  那么你编程的时候 比方说你知道这个树是有序树 你像搜索某个大小的数在不在这个树里面  你怎么编程 你只能将程序写的很健壮  要能保证一个节点下不管有多少子树你都能访问并且标记断点  这层没有可能又返回第一个子树的子树中的第一个开始遍历  你会发现程序不好写  不好嵌套递归  不好提高效率。我们研究数据结构为什么 就是要提高效率 如果是有序树 比方用孩子兄弟表示法转换为二叉树  那你遍历就简单多了  来个中序遍历  很容易找到。你可能会说  其实有的时候有序树直接找也挺快的。。。没错  当然不是任何数据结构类型在任何时候都是最好使的  我们研究它这种转换 是为了丰富我们构建数据结构的手段 是的我们存储和遍历数据的效率更高  使我们编的程序更加人性化 更加易懂。。。当然你问无顺序树要不要转呢  这个倒是么必要 因为顺序树没方法转  只能是读出来以后再构建排序二叉树。总而言之  二叉树存在是在一些方面  很大一方面  但不是全部方面  方便了我们对于数据的理解 方便了我们人脑对于数据结构的抽象  方便了我们编程  或许很多时候转不转对于机器来说可能复杂度相差不多  但是不转可能让程序员头昏脑胀  而转换了就可能让程序员心情愉悦  这些东西很深奥 要感悟  不能一味的问什么就好 什么就不好  一定要从联系和运动的观点看问题 活学活用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP