heap不属于STL容器,它扮演者priority queue的助手。heap是一种完全二叉树,可由数组来实现,但heap需要动态改变大小,所以最终选择了vector作为底层容器。STL默认提供最大堆。
题外话:分析heap的源码就能清楚的理解堆这种数据结构的例程,而STL库代码的质量又很高,所以看堆的代码,STL源码是一个很好的选择。
为了满足完全二叉树的性质,新插入的元素一...
分类:
其他好文 时间:
2014-07-22 23:04:53
阅读次数:
363
题目:
Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height.
翻译:
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
思路:
要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。...
分类:
其他好文 时间:
2014-05-01 17:48:45
阅读次数:
321
19. 二叉树的镜像(递归)即:交换所有节点的左右子树。从下往上 或 从上往下
都可以。#include #include using namespace std;struct BTNode{ int v; // default
positive Integer. BTNode *pLeft; B....
分类:
其他好文 时间:
2014-05-01 12:41:11
阅读次数:
416
原题链接: http://oj.leetcode.com/problems/unique-binary-search-trees/
这道题要求可行的二叉查找树的数量,其实二叉查找树可以任意取根,只要满足中序遍历有序的要求就可以。从处理子问题的角度来看,选取一个结点为根,就把结点切成左右子树,以这个结点为根的可行二叉树数量就是左右子树可行二叉树数量的乘积,所以总的数量是将以所有结点为根的可行结果...
分类:
其他好文 时间:
2014-04-30 22:12:39
阅读次数:
244
前面的博客中我们讲到的堆的两种变体,二叉堆和二项堆,今天我们要讲的就是著名的斐波那契堆。二项堆和斐波那契堆对于search操作的支持均比较低效;可能花费一段时间才能找到关键字。为此,涉及给定元素的操作(如DECREASE-KEY和DELETE)均需要一个指针指向这个元素,并且指针作为输入的一部分。...
分类:
其他好文 时间:
2014-04-29 13:36:20
阅读次数:
331
在上一篇排序算法的文章中介绍了插入排序,分别为直接插入排序和希尔排序。今天我们继续来介绍其他的排序算法。
1、选择排序:简单选择排序
2、选择排序:堆排序...
分类:
其他好文 时间:
2014-04-29 13:36:20
阅读次数:
340
数据结构在自考的时候学过,所以一些简单的概念大概了解,但是必定考纲不一样,所以在软考中还是会有一些陌生的知识,现在就说一下平衡二叉树
一、什么是平衡二叉树
根据二叉树的基本概念可想到:平衡二叉树的左右子树都是平衡二叉树;除此之外,左子树和右子树的高度差的绝对值不能超过1
二、平衡二叉树的作用
因为在二叉排序树查找过程中,只有树的形态比较均匀的时候,查找效率才能...
分类:
其他好文 时间:
2014-04-29 13:25:22
阅读次数:
276
小米面试
我:
一面:
数据结构+算法:
斐波那契数列:非递归-迭代
1MB内存,外存-100W整数,排序,O(1)-位图法
设计模式:
代理模式:OO
C++:虚函数表
二面:
数据结构+算法:
快排
二叉树遍历
设计模式:
单例模式-多线程:
关系数据库的特性
进程和线程的区别
三面:
数据结构+算法:...
分类:
移动开发 时间:
2014-04-29 13:17:19
阅读次数:
606
很久没有用过二叉树了,最近由于需要用到了,发现很多知识需要巩固了,中间涉及到一个算法就是找任意两个节点的最近祖先。通过本人回顾和演算,最终提出了下面一个方法,网上也有很多其他的方式实现,再次仅对自己好几个小时的工作作个记录和积累吧! 程序是用C语言写的,个人觉得如果用C#实现会更加方便。
首先是数据结构定义:
typedef char TElemType;
typedef bool Statu...
分类:
其他好文 时间:
2014-04-27 21:14:06
阅读次数:
366