1、二叉树的基本概念 二叉树:二叉树是每个节点最多有两个子树的树结构。 根节点:一棵树最上面的节点称为根节点。 父节点、子节点:如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子 节点。 叶子节点:没有任何子节点的节点称为叶子节点。 兄弟节点:具有相同父节点的节点互称为兄弟节点。 ...
分类:
其他好文 时间:
2019-10-15 22:48:30
阅读次数:
131
堆满足的条件:1,是一颗完全二叉树。2,大根堆:父节点大于各个孩子节点。每个节点都满足这个道理。小根堆同理。 parent = (i-1)/2 #i为当前节点 left = 2*i+1 right = 2*i + 2 堆可以分为大根堆和小根堆,这里用大根堆的情况来定义操作:(1)大根堆调整(max_ ...
分类:
编程语言 时间:
2019-10-14 16:13:54
阅读次数:
98
1 堆的概念 堆是一棵顺序存储的完全二叉树。 其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。 其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。 举例来说,对于n个元素的序列{R0, R1, ... , Rn}当且仅当满足下列关系之一时,称之为堆: (1) R ...
分类:
编程语言 时间:
2019-10-03 16:04:06
阅读次数:
115
大意: 一个$k$层完全二叉树, 每个节点向它祖先连边, 就得到一个$k$房子, 求$k$房子的所有简单路径数. $DP$好题. 首先设$dp_{i,j}$表示$i$房子, 分出$j$条简单路径的方案数, 那么最终答案就为$dp_{i,1}$. 考虑两棵$i-1$房子转移到$i$房子的情况, 分四种 ...
分类:
其他好文 时间:
2019-10-02 23:15:23
阅读次数:
123
Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入的认识。 总体介绍 前面以Java?_Arra ...
分类:
编程语言 时间:
2019-10-02 12:34:48
阅读次数:
90
二叉树的概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密 满二叉树:除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。 哈夫曼树:给定n个权值作 ...
分类:
其他好文 时间:
2019-09-24 22:58:35
阅读次数:
123
1.完全二叉树的概念 若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。 完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结 ...
分类:
编程语言 时间:
2019-09-19 10:28:29
阅读次数:
136
知识摘要: 1.二叉搜索树(又叫:二叉排序树,二叉查找树): 遵循: Tree.left.val<Tree.val<Tree.right.val. 所以它的中序遍历一定是一个有序列。 2.其他一些树: 满二叉树:从上往下,除了叶子结点外,其他结点的左右子节点都存在。 完全二叉树:比满二叉树少几个叶子 ...
分类:
其他好文 时间:
2019-09-05 23:06:46
阅读次数:
91
【题目描述】: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。 完全二叉树:只有最下面的两层结 ...
分类:
编程语言 时间:
2019-09-05 23:05:34
阅读次数:
371
问题1: 线段树空间只需要2*n即可??? 对于这种建图方式,建出来的并不是完全二叉树,而是具有完全二叉树性质(父节点为x,则左儿子为2x,右儿子为2x+1),好处:可以省掉许多并不需要的节点。由于具有完全二叉树这种性质,2*n空间一定不够用!!见下图: 问题2: 线段树空间只需要3*n即可??? ...
分类:
其他好文 时间:
2019-09-02 15:38:58
阅读次数:
134