最近公共祖先 PS: 如果一棵二叉树的结点要么是叶子结点,要么它有两个子结点,这样的树就是满二叉树。 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 等比数列通项公式、求和公式 then,看题 x的祖 ...
分类:
其他好文 时间:
2019-05-02 21:46:55
阅读次数:
129
题目 题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 解析 思路1 这一题应用堆排序算法复杂度只有O(nlog k),堆是完全二叉树的一种,最大堆就是最上面的数是最大的该方法基于二叉树或者堆来实现,首先把数组前k个数字 ...
分类:
编程语言 时间:
2019-05-02 17:09:01
阅读次数:
169
""" 堆是一种完全二叉树,有最大堆和最小堆两种。 最大堆:对于每个非叶子结点V,V的值都比它的两个孩子结点大,称为最大堆特性(heap order property), 最大堆里面的根总是储存最大值,最小值储存在叶子结点。 最小堆:和最大堆相反,每个非叶子结点V,它的两个孩子的值都比V的值大。 "... ...
分类:
编程语言 时间:
2019-04-26 20:45:51
阅读次数:
166
1.堆是什么? (如图所示是一个小堆) 1)堆是一颗完全二叉树,它的最后一层不是满的,其他每一层都是满的,最后一层从左到右也没有空隙。 简单的说? 完全二叉树也就是没有缝隙的二叉树。 2)堆常常通过数组实现,因为 父子节点直接的关系直接可以通过数组的索引换算 parent(i) = i/2 left ...
分类:
其他好文 时间:
2019-04-25 17:24:56
阅读次数:
163
归并排序仍然是利用完全二叉树实现,它是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列。 基本过程:假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并 ...
分类:
编程语言 时间:
2019-04-25 14:29:57
阅读次数:
438
二叉树 特点 每个结点最多有两棵子树 左子树和右子树是有顺序的,不能颠倒 即使树中某结点只有一棵子树,也要区分左还是右 五种基本形态 特殊二叉树 ——斜树 ——满二叉树 特点: ——完全二叉树 判断: 理解: 满二叉树一定是完全二叉树,完全二叉树不一定满 完全二叉树所有结点与同样深度的满二叉树,它们 ...
分类:
其他好文 时间:
2019-04-23 20:42:38
阅读次数:
162
二叉树 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点 ...
分类:
其他好文 时间:
2019-04-21 13:05:25
阅读次数:
174
二叉堆是一个数组,它可以被看成一个近似的完全二叉树,树上的每一个节点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充。二叉堆可以有两种形式:最大堆和最小堆,这里我主要讲解最大堆。最大堆的定义是:堆中某个节点的值总是不大于其父节点的值。 当我们用二叉堆表示上面的数组的时候,我们 ...
分类:
其他好文 时间:
2019-04-20 19:41:22
阅读次数:
168
一、动图演示 二、思路分析 先来了解下堆的相关概念:堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子 该数组从逻辑 ...
分类:
编程语言 时间:
2019-04-20 15:40:51
阅读次数:
185
数据结构 堆 Heap是一种数据结构具有以下的特点: 1)完全二叉树; 2)heap中存储的值是偏序; Min heap: 父节点的值小于或等于子节点的值; Max heap: 父节点的值大于或等于子节点的值; 1.堆的存储: 一般都用数组来表示堆,i结点的父结点下标就为(i–1)/2。它的左右子结 ...
分类:
其他好文 时间:
2019-04-17 16:34:59
阅读次数:
142