#include
#include
typedef struct TreeNode//二叉树节点声明
{
int value;
TreeNode* left;
TreeNode* right;
}*PtrNode;
void CreatTree(PtrNode *root)//先序建立一个树
{
int tmp;
scanf("%d",&tmp);
if(tmp==-1)
*r...
分类:
编程语言 时间:
2015-05-26 21:22:20
阅读次数:
276
对于创建一棵二叉树,首先想到的方法是使用递归思想进行。这里,采用先序递归创建二叉树。首先介绍下自己写的二叉树的定义:1 typedef int TElementType;2 3 typedef struct BiTNode4 {5 TElementType data;6 BiTNod...
分类:
其他好文 时间:
2015-05-15 13:35:05
阅读次数:
127
查找顺序表时,若 每个元素的概率 都相等 用 二分查找 效率 最高。但是 如果 概率 不相等时,(SOST)静态最优查找表 效率 要高于 二分查找。静态最优查找表 是 使得 从 根 到 每个节点的路径 长度 和 权值 乘积 之和 最小。
书上说的 静态最优 查找树的创建 时间 复杂度 较高,所以 用 次优 查找树(NOST) 代替。
下面 上代码:
// Nost.cpp : 定义控制台应用...
分类:
其他好文 时间:
2015-04-20 17:07:05
阅读次数:
192
动态字典树每次都要new一个内存来操作,所以耗时也是较多的;所以我们可以先一次性开辟出足够的空间,然后模拟动态字典树的创建查找过程来写出相应的静态字典树。代码都差不多,主要是你得先学会了动态字典树;接下来的事情就是模拟了,,,模拟,,模拟。结构定义:struct Trie{ int...
分类:
其他好文 时间:
2015-03-13 15:50:56
阅读次数:
283
二叉搜索树的删除:
在删除之前需要从树中查找到这个节点,然后再针对情况来判断如何删除。
分为三种情况,首先是此节点没有孩子节点,此节点有一个孩子节点,此节点有两个孩子节点
void Delete(BinTree*& root,int value)
{
BinTree* delnode= NULL;
if(root == NULL)
return ;
BinTree* temp ...
分类:
其他好文 时间:
2015-01-19 10:52:53
阅读次数:
121
二叉树的创建及遍历是很多二叉树问题的基础,递归遍历逻辑清晰,代码简约漂亮,然则效率低下(所有递归方案的通病,非不得已不用递归);非递归遍历高效,却不是能信手写出来的,特别是后续非递归遍历,相信很多资深码工也有这样的经历:5年前学习了二叉树的非递归遍历,一个月前复习了并达到能熟练写出的程度,在不参.....
分类:
其他好文 时间:
2015-01-15 21:45:57
阅读次数:
185
原文: 一步一步写算法(之哈夫曼树 下) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说到了哈夫曼树的创建,那下面一个重要的环节就是哈夫曼树的排序问题。但是由于排序的内容是数据结构,因此形式上说,我们需要采用通用数据排序算法,这在我之前...
分类:
编程语言 时间:
2014-12-11 11:52:02
阅读次数:
176
主要使用交互的方式进行树的创建,因此要求输入的时候必须准确,最好是先有一个示意图来对照着输入:下面是使用链表的方式构建的树,思路主要是进行递归进行添加。main.cpp 1 #include "iostream" 2 #include "stdlib.h" 3 /*一般树的建立和遍历*/ 4...
分类:
其他好文 时间:
2014-11-22 20:13:44
阅读次数:
242
最近由于项目需要,刚刚学完了Action委托和Func委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利、才能使代码更加简介、优雅。Lambda表达式"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda.....