大意 给一棵树,初始时结点都为白色,然后你可以选一个点作为根节点,加上这个节点连通的白色节点数,然后把这个点染黑。下面再继续选择与黑节点相连的点,加上白色节点数,染黑。求最大的值。 思路 那么我们很容易意识到,起关键作用的就是选择了那个根节点。设dp[i]为以i为根节点的最大值。则,我们对于一个根节 ...
分类:
其他好文 时间:
2021-06-24 18:02:05
阅读次数:
0
{ "category":[ "id":"1", "isleaf":"0", "isshow":"1", "label":"根结点", "name":"根结点", "orderby":1, "parentid":"0", "children":[ { "id":"1-1 ...
分类:
Web程序 时间:
2021-06-24 17:37:47
阅读次数:
0
删除链表中重复的结点 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2] 输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1, ...
分类:
其他好文 时间:
2021-06-20 18:13:05
阅读次数:
0
一些定义 PL 树的路径长度,即树根到每个叶节点的距离之和。 WPL 树的带权路径长度,即树根到每个叶节点的距离与每个叶结点权值的乘积之和。 哈夫曼树,也叫 Huffman 树,就是 WPL 最短的一种最优多叉树。 \(\) 哈夫曼树的构造 对于哈夫曼树的构造,我们以二叉哈夫曼树为例: 我们每次选择 ...
分类:
其他好文 时间:
2021-06-19 19:09:18
阅读次数:
0
#非空二叉树b的宽度 有三种解决方案 ##方案一 记录每个结点的所在层数 比较麻烦,最后还得写一个循环去找出结点数最多的层 ##方案二 加一个队列,在循环过程中就记录当前结点数最多的层 即用两个队列来完成层次遍历,上一层遍历完的时候那个队列也为空,此时另一个队列的长度就是该层的结点数量 ##方案三 ...
分类:
其他好文 时间:
2021-06-18 19:42:59
阅读次数:
0
一、二叉树介绍 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树; 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2; 二、二叉树的性质 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如果二叉树的深度为 K,那么此二叉树最多有 2K ...
分类:
其他好文 时间:
2021-06-18 18:57:03
阅读次数:
0
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 10 struct ListNode* middleN ...
分类:
其他好文 时间:
2021-06-16 18:35:48
阅读次数:
0
题目链接如下: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 本题使用了如下两个方法: 哑结点:若给定的链表中没有空的头节点,设置一个哑结点在第一个结点前面,最后在删除掉。 如: 题目中给定 head 作为链表的 ...
分类:
其他好文 时间:
2021-06-15 18:34:04
阅读次数:
0
简介 递归的算法很巧妙. 算法思想: 判断递归终止条件 将链表划分成两部分 进行递归判断左右 将返回的两部分头结点, 进行有序合并 返回 头结点 code /** * Definition for singly-linked list. * struct ListNode { * int val; ...
分类:
编程语言 时间:
2021-06-10 17:32:08
阅读次数:
0
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 特判不为空过后,一定要马上判断root是否等于p或q ...
分类:
其他好文 时间:
2021-06-09 10:30:45
阅读次数:
0