一棵 k-超级树(k-SuperTree) 可按如下方法得到:取一棵深度为 k 的满二叉树,对每个节点向它的所有祖先连边(如果这条边不存在的话)。 请统计一棵 k-超级树 中有多少条不同的简单有向路径,对 mod 取模。 ...
分类:
其他好文 时间:
2019-03-28 00:39:41
阅读次数:
147
堆排序的基本思想:将给定的数组转化成堆,然后将根节点与尾节点互换,将得到的树再次堆化,循环往复直到完成排序。 堆的性质:首先,堆是个完全二叉树,因此可以用一位数组表示;其次,对于堆中的每一个节点,它总是大于自己的孩子节点。 代码主要分为三个核心操作:1 对单个节点堆化;2 将整个数组堆化;3 将堆化 ...
分类:
编程语言 时间:
2019-03-25 16:20:58
阅读次数:
176
https://leetcode.com/problems/complete-binary-tree-inserter/ 设计一个CBTInserter,使用给定完全二叉树初始化。三个功能; CBTInserter(TreeNode root) initializes the data struct ...
分类:
其他好文 时间:
2019-03-23 13:04:16
阅读次数:
148
归并排序时间复杂度归并排序的时间复杂度是O(N*lgN)。假设被排序的数列中有N个数。遍历一趟的时间复杂度是O(N),需要遍历多少次呢?归并排序的形式就是一棵二叉树,它需要遍历的次数就是二叉树的深度,而根据完全二叉树的可以得出它的时间复杂度是O(N*lgN)。 归并排序稳定性归并排序是稳定的算法,它 ...
分类:
编程语言 时间:
2019-03-21 10:31:55
阅读次数:
158
题目 满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。 返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。 答案中每个树的每个结点都必须有 node.val=0。 你可以按任何顺序返回树的最终列表。 示例: 输入:7输出:[[0,0,0,null, ...
分类:
其他好文 时间:
2019-03-20 01:02:39
阅读次数:
198
#193. 「2019冬令营提高组」堆 但是每个点都遍历一遍,有些点的子树完全相同却重复算了 忽然记起完全二叉树的性质之一:每个非叶节点的子树中至少有一个是满二叉树 那么我们预处理满二叉树的那一块,剩下的dfs就可以辣 求阶乘.......分块打表 设打表分成$k$段,则复杂度$O(logn+n/k ...
分类:
其他好文 时间:
2019-03-17 23:36:39
阅读次数:
177
[toc] 什么是堆 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 通常将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。 堆的存 ...
分类:
编程语言 时间:
2019-03-10 23:30:51
阅读次数:
372
记录一下某次使用平衡二叉树。 注:二叉树概念 【 1、二叉树、完全二叉树、满二叉树、平衡二叉树区别 二叉树: 除了叶子节点外,每个节点只有两个分支,左子树和右子树,每个节点的最大度数为2 满二叉树:除了叶结点外每一个结点都有左右子叶 且 叶结点都处在最底层的二叉树。 完全二叉树:只有最下面的两层结点 ...
分类:
编程语言 时间:
2019-03-05 11:18:20
阅读次数:
192
基本概念: 1、完全二叉树:若二叉树的深度为h,则除第h层外,其他层的结点全部达到最大值,且第h层的所有结点都集中在左子树。 2、满二叉树:满二叉树是一种特殊的的完全二叉树,所有层的结点都是最大值。 定义: 1、堆是一颗完全二叉树; 2、堆中的某个结点的值总是大于等于(最大堆)或小于等于(最小堆)其 ...
分类:
编程语言 时间:
2019-03-04 15:56:55
阅读次数:
213
一、原理 ? 堆排序是采用数据结构堆进行排序的算法。堆是一种近似完全二叉树的结构,并同时满足堆的性质:子节点的键值或索引总是小于(或大于)它的父节点。 ? 堆中定义以下几种操作: ? 1) 最大堆调整(Max Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点 。 ? 2) 创建最大 ...
分类:
编程语言 时间:
2019-02-27 01:27:13
阅读次数:
225