对于二叉查找树的最大难处,我觉得是在于删除,当删除一个元素时,简单地说有两种情况,一种是节点,一种是叶子。假设被删除值为D 1.叶子,很简单,找到叶子的父节点,然后将这个父节点指向该叶子的树枝赋为0;有一种特殊情况是就一个根,那么释放根,然后返回0。 2.节点,需要做两步,找到该节点的左子树的最大值 ...
分类:
其他好文 时间:
2016-07-13 22:43:54
阅读次数:
217
php组合模式主要用于上下级关系,可以新增叶子和树枝,分析如下代码即可明白组合模式的含义: 显示效果如下 ...
分类:
Web程序 时间:
2016-07-13 22:34:23
阅读次数:
195
今天算是见到了线段树这玩意儿了,,, 这个线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。每一个叶子节点表示了一个单位区间。对于每一个非叶结点所表示的结点[a,b],其左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。 这个线段树可以使用指针来表示 ...
分类:
其他好文 时间:
2016-07-13 20:23:01
阅读次数:
105
之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包括:销毁一棵树计算树的深度(高度).计算叶子节点的个数计算所有节点的个数复制二叉树具体见代码:#include<stdio.h>
#include<stdlib.h>
typedefstructNode
{
intdata;
structNode*lch..
分类:
其他好文 时间:
2016-07-13 06:58:32
阅读次数:
219
http://www.cnblogs.com/TenosDoIt/p/3453089.html#b 线段树的思想是 将一整个区间二分拆成多个不重合的2段区间,知道不能拆分为止。 例如对于数组[2, 5, 1, 4, 9, 3]可以构造如下的二叉树(背景为白色表示叶子节点,非叶子节点的值是其对应数组区 ...
分类:
编程语言 时间:
2016-07-12 21:15:24
阅读次数:
222
题目大概说给一棵点有权、边也有权的树。一个结点v不高兴当且仅当存在一个其子树上的结点u,使得v到u路径上的边权和大于u的权值。现在要不断地删除叶子结点使得所有结点都高兴,问最少删几个叶子结点。 一开始题目看错了,以为说的是v到u路径上的边权和小于v的权值,然后想出了个解法:从根开始DFS,找高兴的结 ...
分类:
其他好文 时间:
2016-07-12 11:53:32
阅读次数:
157
实现二叉树的基本操作:建立、遍历、计算深度、结点数、叶子数等。 输入C,先序创建二叉树,#表示空节点; 输入H:计算二叉树的高度; 输入L:计算二叉树的叶子个数; 输入N:计算二叉树节点总个数; 输入1:先序遍历二叉树; 输入2:中序遍历二叉树; 输入3:后续遍历二叉树; 输入F:查找值=x的节点的 ...
分类:
其他好文 时间:
2016-07-12 09:07:28
阅读次数:
541
将二叉树的叶子节点按从左到右的顺序连成一个单链表,表头指针为head。链接时用叶子节点的右指针来存放单链表指针......
分类:
其他好文 时间:
2016-07-10 11:16:34
阅读次数:
196
红黑树 红黑树是一种二叉查找树,但在每个结点上增加了一个存储位表示结点的颜色,可以是RED或者BLACK。通过对任何一条从根到叶子的路径上各个着色方式的限制, 红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。当二叉查找树的高度较低时,这些操作执行的比较快,但是当树的高度较高时,这些操作 ...
分类:
编程语言 时间:
2016-07-10 11:03:10
阅读次数:
244
题意:给定一棵树,每个叶子有一个权值,每条边也有一个权值,现在让你删最少的结点,使得从任何结点出发到另一个结点的边上权值和都小于两个结点的权值。 析:很明显是DFS,不过要想找出最少的结点可能不太容易,所以我们可以先找出剩下结点最多,那么用总数减去这个就好,那么怎么找哪些结点是剩下的呢?首先要知道, ...
分类:
其他好文 时间:
2016-07-09 16:14:35
阅读次数:
151