数据结构
火星日立zy
这个作者很懒,什么都没留下…
展开
-
AVL树的Java实现(递归方法)
AVL树是一种自平衡的二叉查找树。首先它是一种二叉查找树,满足任意一个节点(叶子节点除外)的值大于它左子树上任意一个节点,且小于它右子树上任意一个节点。因为二叉查找树的深度可能为O(N),这样的效率较低,因此衍生出了AVL树,它具有自平衡的效果,能保持树的深度为O(logN)。AVL树满足:任意一个节点它的左子树的高度和右子树的高度差不超过1。(假设叶子节点的高度为0,null节点的高度为-1)原创 2014-12-18 10:59:25 · 628 阅读 · 0 评论 -
栈的应用---平衡符号的检测
栈在数据结构中用处非常大,它就是一种先入后出的结构。可以用数组或者链表来完成栈的编程。具体选用哪种得看你的应用场景。Java内存中的栈用来存放已知生命周期和大小的数据,局部变量都存放在栈中。它也是是用来进行方法处理的一个数据区域,一个方法从调用到完成对应了一个栈帧从入栈到出栈的过程。 这篇文章主要说明了栈的一个应用---平衡符号的检测。括号都是成对成对出现的,比如( ),{ },[原创 2014-12-23 13:43:40 · 773 阅读 · 0 评论 -
红黑树的Java实现
之前一直在复习数据结构中的树,从最开始的二叉树,到二叉查找树,再到平衡二叉树(AVL),到最后的红黑树。要说复杂度,红黑树确实比之前的AVL树要复杂好多,特别是删除操作。但其实弄懂了红黑树的平衡原理,插入和删除看起来也就没那么复杂了。我主要看的是《算法导论》和《数据结构》这两本书,前者对于红黑树的描述更加准确并且提供了相应的伪代码。而我自己将原理弄懂之后,就对应着伪代码写出了红黑树的Java程序。原创 2015-01-03 15:26:16 · 431 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历应该说是非常常见的,用递归的话程序非常简单明了,而有的时候需要写非递归的遍历程序,这个时候就需要对此有一定的了解。二叉树的遍历根据根节点和左右子节点遍历顺序的不同,可以分为三种:前序遍历,中序遍历,后序遍历。前序遍历就是先根节点->左节点->右节点。非递归前序遍历编写最简单,最难的是后续遍历。下面就来一一写出它们的程序,这里用的是Java。非递归遍历是一种DFS(深度优先搜素),从原创 2015-05-09 22:26:03 · 421 阅读 · 0 评论