Hello 树先生
文章平均质量分 85
N_Sev7
Hello World
展开
-
非递归学习树结构(五)--AVL(自平衡二叉排序)树
BST树存在退化成线性链表的可能,查找的时间复杂度变成(O(n)),造成这种结果的原因就是BST树已经严重失衡,所以改善的方向就是如何在插入和删除的过程中不会让树失衡,这就需要插入和删除的过程中进行适当的旋转操作,旋转操作本身比较简单,但是何时何地进行什么样的旋转,才是难点。本文以非递归的方式来实现插入和删除的过程。原创 2015-10-09 17:50:24 · 1326 阅读 · 0 评论 -
非递归学习树结构(一)--栈和队列的实现
在开始学习树结构之前,有必要先学习一下栈和队列的知识,我们知道,在树结构中最让人头疼的就是各种递归,据传言,所有的递归都可以用栈来实现,因为递归的过程其实就是进栈出栈的过程,因此,可以把递归改写成对栈的迭代操作,对于是递归好还是迭代好这样的讨论我们就不复述了,没有最好,只有最合适。 栈和队列是学习树结构之前应该掌握的知识,我们知道树有前中后序遍历,深广优先搜索,如果树的遍历中使用递归方法,则涉及原创 2015-09-16 20:17:16 · 1224 阅读 · 0 评论 -
非递归学习树结构(二)--前中后遍历
非递归方式解释对于二叉树的先根、中根、后根遍历的具体过程......原创 2015-09-17 21:57:11 · 937 阅读 · 0 评论 -
非递归学习树结构(三)--深广优先搜
深度优先搜索和广度优先搜索是树形结构中常用的两种搜索遍历方式,其实更多的是用在图中的,深度优先搜索可以用来判断有向图中是否存在环,广度优先搜索就更有用了,常用的路径搜索算法一般都是建立在广度优先搜索的基础上,如dijkstra(迪杰斯特拉)算法,A*算法等,感觉两者的唯一区别就是A*算法中在计算路径权重时加入了一个估价函数,来改变广搜的方向,让搜索向目的地方伸展,减少无用搜索的数量,所原创 2015-09-18 18:18:25 · 777 阅读 · 0 评论 -
非递归学习树结构(四)--BST(二叉排序)树
二叉查找树,排序二叉树(中序遍历结果是有序序列),二叉搜索树其实说的都是BST树,对于二叉查找树中的每一个非叶子节点,其左子节点的值比当前结点的值小,其右子节点的值比当前结点的值大。 二叉查找树有个特点,那就是对BST树进行中根遍历,得到的结果一定是个有序序列,如果是:左值 根值 < 右值,得到的就是从小到大的序列。其实原因很简单,中根遍历的书序是左中右,而BST树原创 2015-09-22 21:08:47 · 908 阅读 · 0 评论 -
非递归学习树结构(六)--RB-Tree(红黑树)
终于深入的理解并用代码一步一步实现了红黑树。Linux内核的进程调度和内存管理,STL库的map容器的实现都使用了红黑树,这是一种效率很高的二叉搜索树,效率基本上满足log(n),它与AVL树有什么区别呢? 学习了AVL树之后,如果你觉得关于二叉搜索树的学习就结束了,那你就错了,因为,还有一个树,红黑树,红黑树学习完之后,二叉搜索树基本上就告一段落了,还有一些二叉搜索树的原创 2015-10-15 21:54:55 · 1523 阅读 · 0 评论