关于数据结构之树(各种树)的问题??????

qq_34246573 2017-06-14 06:04:58
我很想问问,为何树形数据结构在程序世界貌似应用很多,但是我不懂了,树形数据结构感觉遍历起来很费经,运行时间很长啊,试问有个树很庞大了,要找到那个自己要的数,不是很耗费时间吗?没个节点都两个子节点,然后子节点又有两个子节点,节点数成指数倍增啊,如果一条一条从左到右遍历过去,运行时间复杂度很高吧,求大神为我解惑啊
...全文
541 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无语_ 2017-09-01
  • 打赏
  • 举报
回复
比如你有一百万的点,放到树上不也是一百万个点?放到线性表里也是一百万个点啊,你觉得每一层是指数增长的没问题,但是100万个点就算放入二叉树能有几层?也就20层不到,因此才发明了节点之间相对有序的树比如BST这类的来减少不必要的子树遍历,毕竟排除的子树高度越高,优化掉的遍历数量越多,越有利于节约时间
Moyiii 2017-07-28
  • 打赏
  • 举报
回复
我理解的是,你为了搜索而建立一颗树,你多半不会去遍历它,你为了遍历可能就建立了一个线性表等,或者线索化二叉树。总之没有哪个数据结构是完美的,多种配合起来用吧
三仙半 2017-07-17
  • 打赏
  • 举报
回复
一个数据集有n个节点,用平衡二叉排序树存储,该树有lgN层,用链表存储,链表长度为n(假设有序)。 那么要确定一个数据是否在数据集中,在平衡二叉排序树最多需要lgN次比较就可以确定,而链表平均需要n/2次比较,当n比较大的情况下,lgN和n/2的效率差是很大的。 就从上面的简单的例子就可以知道树有多重要了。
qq_34246573 2017-06-15
  • 打赏
  • 举报
回复
引用 1 楼 FancyMouse 的回复:
但是相对于树的总大小还是线性的。大小和深度是两个不同的概念。
不太懂,因为linkedlist数据结构也是链表的形式,与树形的数据差不多,树形数据结构也是指针链接的形式,但是我看算法书上说,链表形式的结构遍历起来很慢,远不如hash,所以,我觉得遍历树也是与遍历list一样,会很慢!
FancyMouse 2017-06-15
  • 打赏
  • 举报
回复
但是相对于树的总大小还是线性的。大小和深度是两个不同的概念。
欢乐的小猪 2017-06-15
  • 打赏
  • 举报
回复
遍历一遍时间复杂度为o(n) 比方加一个for循环,对每个结点需要进行遍历树所有结点的操作,时间复杂度就为o(n*n)

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧