Description 设有一棵二叉树,如下图 其中,圈中数字表示结点居民的人口.圈边上数字表示结点编号,.现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间 的距离为1.如上图中,若医院建在: 1处:则距离之和=4+12+2*20+2*40=136 3处:则距
分类:
其他好文 时间:
2016-02-11 09:00:17
阅读次数:
286
直接贪心嘛。先想想最后平衡的时候,如果知道了总重量,那么每一个结点的重量其实也就确定了。每个结点在左在右其实都不影响,只和层数有关。现在反过来,如果不修改某个结点,那么就可以计算出总质量,取总质量出现次数最多的保持不变。/***************************************...
分类:
其他好文 时间:
2015-11-12 01:10:53
阅读次数:
340
给出一个后缀表达式f(x),最多出现一次x,解方程f(x) = 0。读取的时候用一个栈保存之前的结点,可以得到一颗二叉树,标记出现'X'的路径,先把没有出现'X'的子树算完,由于读取建树的时候是由底向上的,这步可以在读取的时候顺带完成。注意'X'或'1/x'在某个结点和'0'相乘,那么'X'等效与没...
分类:
其他好文 时间:
2015-08-29 15:12:54
阅读次数:
617
题意:
给出一颗n个结点的树,点上有权值;
两种操作:
1.修改某个结点的权值;
2.求x,y路径上第K大值;
题解:
首先显然这题可以先树剖一下,将其转化为区间问题;
那么问题来了,用什么维护?
这是有很多办法的,一般人都会上一些比较显然的方法吧;
比如线段树套平衡树,二分答案处理询问;
时间达到了O(mlog^4n)。。。20*20*20*20=160000.。。;...
分类:
Web程序 时间:
2015-08-27 21:20:59
阅读次数:
411
题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true思想:前后节点,值复制代码如下:import java.util.*;/*public class ListNode { int val;...
分类:
其他好文 时间:
2015-08-25 19:04:08
阅读次数:
110
实现一个算法删除链表中的某个结点,假定你只能访问这个这结点:输入:单向链表a->b->c->d->e中的结点c结果:不返回任何数据,但是该链表变为a->b->d->e分析:当结点为空或者是尾结点的时候,该算法实现不了。定义一个临时的next指针指向要删除结点的后续,n的data移动到next的dat...
分类:
其他好文 时间:
2015-08-19 07:03:37
阅读次数:
135
转自:http://blog.csdn.net/tuhuolong/article/details/6844850树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍:1.左旋(右子为轴,当前结点左旋)如上图所示:当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pi...
分类:
其他好文 时间:
2015-08-05 21:49:24
阅读次数:
137
1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差的绝对值可能会超过1,称之为不平衡。而在平衡二叉树中,任何结点的左右子树高度之差的绝对值会小于等于 1。2,为什么需要AVL树呢?在二叉查找树中最坏情况下查找某个元素的时间复杂度为O(n),而AVL树能保...
分类:
编程语言 时间:
2015-07-27 18:36:28
阅读次数:
141
链表常见题型:
1.找到单链表的倒数第k个节点。
2.删除单链表中的某个结点(O(1))。
3.反转链表。
4.两个链表的第一个公共结点。
5.有环链表返回环路的开头节点(及判断是否有环)。
6.合并两个排序的链表。
7.删除链表中重复的结点。...
分类:
编程语言 时间:
2015-07-22 00:10:20
阅读次数:
279
题目来源
http://poj.org/problem?id=2230题目大意
求无向图从起点1开始从不同方向经过所有边的一条路径,输出任意一条。
题解
把无向图的边拆成两条方向相反的有向边,做欧拉回路。
欧拉回路做法:
1、起点入栈;(回路的话起点可以是任意的)
2、扫描与起点相连的所有未被标记的边,对每条这样的边都标记它,然后它的终点入栈,递归处理;
3、如果从某个结点出发没有未...
分类:
其他好文 时间:
2015-07-17 18:50:34
阅读次数:
140