1 for(int i=1;i<=n;i++) 2 cin>>h[i]; 3 size=n; 4 for(int i=n/2;i;i--) 5 down(i); 6 //建堆,根据完全二叉树的性质,n/2后的都是叶子结点,只需要把所有的根结点从后往前down一遍就完成了堆的建立 7 8 9 //小根 ...
分类:
其他好文 时间:
2020-03-15 10:09:43
阅读次数:
70
大顶堆性质 堆是一种特殊的完全二叉树,使用数组存储二叉树时,若某个非叶子节点存储在下标为i的位置,其左右孩子节点分别存储在下标为2i+1和2i+2的位置。 堆可以分为大顶堆和小顶堆,对大顶堆来说,任意非叶子节点不小于其左右孩子节点,对于小顶堆来说,任意非叶子节点不大于其左右孩子节点。若使用数组存储大 ...
分类:
其他好文 时间:
2020-03-14 16:25:22
阅读次数:
132
题意: 就问你每个节点到以这个点为根的子树的叶子节点的最远距离。 链接: http://acm.hdu.edu.cn/search.php?action=listproblem 思路: 我们设DP[i][0]表示以i节点为根节点的子树中的最远距离, DP[i][1]表示以i节点为根节点的子树中的次远 ...
分类:
其他好文 时间:
2020-03-14 14:54:09
阅读次数:
35
1:霍夫曼树概念 按照定义;假设右n个权值{w1,w2,...wn},构造一颗带有n个叶子节点的二叉树,每一个叶子节点权值为wk,每个叶子节点的路径长度为lk,其中带权路径长度WPL = w1*l1+w2*l2+w3*l3+...wn*ln,如果该WPL最小则称该二叉树为Huffman树。具体例子往 ...
分类:
其他好文 时间:
2020-03-13 18:39:15
阅读次数:
48
图解红黑树 一、红黑树的五条规则 红黑树除了符合二叉搜索树的基本规则外,还添加了以下特性: 规则1:节点是红色或黑色的; 规则2:根节点是黑色的; 规则3:每个叶子节点都是黑色的空节点(NIL节点); 规则4:每个红色节点的两个子节点都是黑色的(从每个叶子到根的所有路径上不可能有两个连续的红色节点) ...
分类:
其他好文 时间:
2020-03-10 19:48:14
阅读次数:
64
什么是树(Tree) 只有一个根节点,每个父节点下有一个或多个子节点,每个子节点之间(兄弟节点)不相连 关于树, 有三个概念: 高度(height) 节点的高度 = 节点到叶子节点的最长路径(边数) 数的高度 = 根节点的高度 深度(depth) 节点的深度 = 根节点到这个节点所经历的边的个数 层 ...
分类:
其他好文 时间:
2020-03-10 11:40:09
阅读次数:
69
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3输出: ...
分类:
其他好文 时间:
2020-03-08 13:39:33
阅读次数:
53
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 /** * Definition f ...
分类:
其他好文 时间:
2020-03-08 09:24:21
阅读次数:
48
P1131 [ZJOI2007] 时态同步 树形DP 题意描述 有一棵树,有 n 个节点, n 1 条边,每条边都有一个权值。 要求每个叶子结点到根节点的边权相同,求最少的改动数量(不是次数) 看不懂的话,走 "传送门" 算法分析 很显然是 DP (我也不知道是怎么想到的) 我们可以想一想,如果从根 ...
分类:
其他好文 时间:
2020-03-07 21:15:28
阅读次数:
79
找到两个叶子节点的最低公共节点 思路: 1.若这棵树为二叉搜索树的话,根据特性,我们从根节点遍历,若两个叶子节点值都小于根节点值,则最低公共节点一定在左子树,都大于的话在右子树。当一个小于一个大于时,所到达的节点就是最低公共节点。 2.若这棵树有父指针,那么问题可以转化为求链表的第一个公共节点的问题 ...
分类:
编程语言 时间:
2020-03-06 23:31:30
阅读次数:
89