数据结构
Nou_Camp
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树和二叉树(二)
以下是二叉树的基本代码#include<iostream>#include<assert.h>#include <stack>using namespace std;template<class T>struct BinaryTreeNode { T data; BinaryTreeNode<T>* _left;原创 2017-05-14 21:34:13 · 314 阅读 · 0 评论 -
树和二叉树(一)
二叉树的基本概念 二叉树的定义:二叉树是n(n>=0)个结点构成的有限集合。当n=0时,它是一棵空二叉树;当n>0时,它由一个根节点和两棵互不相交的,分别称作左子树和右子树的二叉树构成。 (1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。 (2)满二叉树——除了叶结点原创 2017-05-11 11:18:56 · 488 阅读 · 0 评论 -
树和二叉树(三)-线索二叉树
二叉树是一种非线性结构, 遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。 用二叉树作为存储结构时, 取到一个节点, 只能获取节点的左孩子和右孩子, 不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息, 我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。 通过对二叉链表的分析可知,存储n个结点的二叉链表具有n+1个空指针域。线索二叉树正是原创 2017-05-15 21:34:17 · 638 阅读 · 0 评论 -
树和二叉树(四)-线索化二叉树
线索化二叉树原创 2017-05-16 13:50:35 · 331 阅读 · 0 评论 -
栈和队列的基本概念和操作
栈和队列1.栈的定义 栈是限定只能在一端进行插入和删除的线性表。允许进行插入和删除操作的一端称为栈顶,另一端为栈底。当栈中没有元素时,称为空栈。 栈的特点是“后进先出”(Last In First Out,LIFO),即后入栈的元素先出栈。2.队列定义 队列是限定在一端进行插入,在另一端进行删除的线性表。队列中允许插入一端称为队尾,允许删除的一端称为队头。 在队尾插入元素的操作原创 2017-05-18 19:53:10 · 2898 阅读 · 0 评论 -
二叉搜索树及其模拟实现
1.二叉搜索树(二叉排序树)的定义 二叉搜索树或者是空树,或者具有以下性质的二叉树: ① 若左子树为空,则左子树上所有结点的关键字值均小于它的根节点的关键字值。 ② 若右子树为空,则右子树上所有结点的关键字值均大于它的根节点的关键字值。 ③左右子树本身又是一颗二叉搜索树。 2.二叉搜索树的查找 查找思路为:若待查找数据元素的关键字值等于二叉搜索树根节点的关键字值,则查找成功;若待查找数据原创 2017-06-03 00:03:35 · 506 阅读 · 0 评论 -
红黑树
1.红黑树简介 红黑树(Red Black Tree) 是一种自平衡二叉查找树,红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。 红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色原创 2017-06-08 11:06:47 · 332 阅读 · 0 评论
分享