黑马程序员技术交流社区

标题: 关于二叉树 [打印本页]

作者: 崔政    时间: 2012-10-23 21:02
标题: 关于二叉树
看了毕老师day15的视频,讲到了TreeSet的数据结构二叉树。
一开始老师画图的时候还懂,但讲到那个默认顺序从小到大开始晕了。
说先存一个值,然后开始比,小的放左边,大的放右边。形成叉状结构

从小往大,1-4可以理解。但是为什么5是29那个位置呢?
因为29是那一叉的最小值?还有6那个位置,为什么顺序不是5-6-8,而是5-6-7.怎么突然拐了,哎呀晕。
求高手解答。
作者: 李润根    时间: 2012-10-23 21:16
因为右边的最低层的左边是最小,左小右大,所以顺序是29<30<36<40<90
作者: 马磊    时间: 2012-10-23 21:28
二叉树的遍历是都是从最底层开始的,先从左边的最底层一直到开始比较的节点为止,然后再遍历这个节点右边的最底层,同样是从这个部分的最左边开始遍历
作者: 陈家明    时间: 2012-10-24 19:20
这就涉及到数据结构的问题,因为二叉树保持总保持一个有序状态:即左子树小于根节点,根节点小于右子树。这样的结构使得二叉树在查找上具有与二分搜索同样的效率。
作者: 林志进    时间: 2012-10-24 23:58
这个问题你可以反过来想想:给你这么9个数字,自己根据左小右大的思路排序一次,自己排一次以后就非常明确了。
想想七(36)为什么在7这个位置上,它是最先跟四比较才会在右边,再跟八比较才会在左边。所以在四右边的都比4大,在八左边的都比八小
作者: 唐进    时间: 2012-10-25 00:38
数据结构有三种遍历,先序遍历,中序遍历和后序遍历,你上面的就是中序排序了,弄懂得就是set怎么去存数据,其实把拍序的结果和中序遍历拿来比较一下就可以把二叉树画出来了
作者: 翁鹏    时间: 2012-10-25 14:56
先更正一点, 你这个是二叉树下面二叉查找树,即比本节点元素小的放右边,比本节点元素大的放左边。

另外,你传的图使用的是树中的中序遍历,树都是递归遍历的。中序遍历的原理是: 先左子树  再中间  再右子树 递归遍历。所以一开始会遍历到最左子节点........。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2