如图:
代码:
#include
#include
#include
#include
using namespace std;
char ch;
typedef struct BinNode
{
char data;
struct BinNode *lchild,*rchild;
}BinNode,*BinTree; //二叉树链式...
分类:
其他好文 时间:
2014-06-05 09:15:24
阅读次数:
203
/*
二叉查找树的链表实现:
以及三种遍历方式,删除节点;
查找节点;
author:天下无双
Date:2014-5-28
Version:3.0
*/
#include
#include
typedef int T;//树内节点的数据类型
using namespace std;
class BiTree
{
private:
struct BiNode{
T data;...
分类:
其他好文 时间:
2014-06-05 09:12:12
阅读次数:
217
直接上代码:
/*
二叉树的链表实现:
以及三种遍历方式:
author:天下无双
Date:2014-5-28
Version:2.0
*/
#include
#include
typedef int T;//树内节点的数据类型
using namespace std;
class BiTree
{
private:
struct BiNode{
T data;
BiN...
分类:
其他好文 时间:
2014-06-05 06:30:49
阅读次数:
273
注意:
1 判断一个节点是否平衡的方法
2 平衡一个节点的方法 :
我这里比原文改进一点,独立出一个平衡节点的函数balanceNode(),这样一个函数可以用来平衡插入和删除操作,使得代码更加简洁了。
这样修改之后就使得平衡二叉树好像和一般二叉树的操作比较,就是多了一个平衡操作。
3 删除操作情况很多,很困难,一定要理清思路。十分容易出bug的地方。
这里是查找后继节点的值,填补上到...
分类:
其他好文 时间:
2014-06-05 05:16:45
阅读次数:
261
本题应该挺经典的,因为可以使用好多方法过,适合训练多种高级数据结构和算法。
这里使用AVL平衡二叉树的解法,时间还可以,大概300ms吧,内存很省188k,因为这里使用指针,没有浪费内存。
这里使用Geeks上面的AVL的做法,使用递归更新树,而不使用双亲指针,试了下使用双亲指针,真的好麻烦,要维护多一个指针,容易出错很多。
递归操作二叉树是非常优雅的。
而且不需要使用任何STL容器,非常...
分类:
其他好文 时间:
2014-06-05 01:56:58
阅读次数:
269
(转载请注明出处:http://blog.csdn.net/buptgshengod)1.背景
接着上一节说,没看到请先看一下上一节关于数据集的划分数据集划分。如今我们得到了每一个特征值得信息熵增益,我们依照信息熵增益的从大到校的顺序,安排排列为二叉树的节点。数据集和二叉树的图见下。(二叉树的图是....
分类:
编程语言 时间:
2014-06-03 07:23:48
阅读次数:
325
堆排序算法使用二叉堆实现排序,树上的每一个节点对应数组中的一个元素。第一步:使用MAX_HEAPIFY维护一个最大堆(所有孩子节点都必须小于或等于其父节点)。它的输入为一个数组A和一下标i,调用MAX_HEAPIFY时,假设节点i的左右子树都是最大堆。伪码:
1 LEFT(i) 2 return.....
分类:
其他好文 时间:
2014-05-29 21:35:08
阅读次数:
364
二叉堆(Binary
Heap)二叉堆是完全二叉树(或者近似完全二叉树);其满足堆的特性:父节点的值>=(<=)任何一个子节点的键值,并且每个左子树或者右子树都是一
个二叉堆(最小堆或者最大堆);一般使用数组构建二叉堆,对于array[i]而言,其左子节点为array[2*i],其右子节点为 arr...
分类:
其他好文 时间:
2014-05-29 14:02:37
阅读次数:
309
算法导论读书笔记(14) -
二叉查找树的具体实现目录二叉查找树的简单Java实现二叉查找树的简单Java实现/** * 二叉查找树 * 部分代码参考自TreeMap的源码 */public
class BinarySearchTree { protected TreeNode root = ...
分类:
其他好文 时间:
2014-05-29 07:54:22
阅读次数:
214