数据结构
文章平均质量分 78
数据结构学习心得、经验
wanglelelihuanhuan
这个作者很懒,什么都没留下…
展开
-
实现二叉搜索树--查找、插入、删除
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树:每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。左子树上所有节点的关键码(key)都小于根节点的关键码(key)。右子树上所有节点的关键码(key)都大于根节点的关键码(key)。左右子树都是二叉搜索树。下图就是一棵二叉搜索树原创 2016-06-04 22:39:29 · 790 阅读 · 0 评论 -
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
假设输入的前序遍历和中序遍历的结果中都不含有重复的数字。 例如,前序遍历序列:{1,2,4,5,6},中序遍历序列:{3,2,4,1,6,5}在二叉树的前序遍历序列中,第一个数字总是根节点的值。在中序遍历序列中,根节点的值在中间,左子树的值在根节点值的左边,右子树的值在根节点的值的右边。#includeusing namespace std;templatestruct Bin原创 2016-06-14 14:43:19 · 2732 阅读 · 0 评论 -
用两个栈实现一个队列
栈的定义--Stack栈只允许在末端进行插入和删除的线性表。栈具有后进先出的特性(LIFO,Last In First Out)。 队列的定义--Queue队列值允许在表的队尾进行插入,在表对头进行删除。队列具有先进先出的特性(FIFO,first In First Out)。思路:1、栈_s1为空时,给_s1依次插入a、b、c。 2、把_s1中的元素逐原创 2016-06-15 14:16:19 · 419 阅读 · 0 评论 -
100w个数中找出最大的前K个数
100w个数中找出最大的前K个数这个题是堆应用。首先100万个数大约占4M内存,可以加载到内存中。我们可以采用排序解决这个问题,比如堆排序、快排等,但排序不是最优解。我们可以利用最小堆来解决这个问题。堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。思路:1、开辟大小为k的空原创 2016-06-21 23:30:31 · 1455 阅读 · 1 评论 -
AVL树详解
AVL树定义:AVL树又称为高度平衡的二叉搜索树。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。AVL树性质:左子树和右子树的高度之差的绝对值不超过1树中的每个左子树和右子树都是AVL树每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因子等于右子树的高度减去左子树的高度 ) AV原创 2016-07-08 20:28:27 · 13932 阅读 · 5 评论 -
红黑树
红黑树介绍: 红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。红黑树和我们以前学过的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树和AVL树的区别在于它使用颜色来标识结点的高度原创 2016-07-08 22:52:22 · 689 阅读 · 0 评论