二叉树的三种遍历 二叉树的有关计算 1.二叉树的深度和层数其实是一样的。2.任意一棵树的总结点数等于总分支数+13.叶子结点也称叶子,度为0的结点。4.一个深度为n的满二叉树的总结点数为 (2^(n-1))-1(其实得出这个结论画个图就知道了,不难)5.深度为h的完全二叉树至少有2^(h-1)个结点 ...
分类:
其他好文 时间:
2016-10-19 13:56:01
阅读次数:
144
对于区间问题,我们常用的方法是线段树。递归式的线段树具有通用性,但速度太慢。ZKW神犇使用非递归的线段树,常数特别小。 与大部分线段树一样,ZKW线段树采用堆式存储。也就是说,x节点的左儿子是x*2,右儿子是x*2+1,父亲是x/2。 由于采用非递归,我们要方便地找到叶子节点。ZKW线段树的方法是, ...
分类:
其他好文 时间:
2016-10-18 20:29:41
阅读次数:
159
题意 给一棵满二叉树,每一层有一个变量,每个变量都有一个值:0或1。0向左走,1向右走。求到达叶子的值 思路 不用建树,只要模拟左走右走就可以了 总结 建树应该也能做,但是目前对建树有点生疏,不是很会。 在推左走右走的公式时能快一点最好,明明很容易,却找共性找了很久,而且DEBUG了很久,就是因为在 ...
分类:
其他好文 时间:
2016-10-18 18:40:14
阅读次数:
177
哈哈,今天偷懒了,在晚上只看了一个组合模式。 例子: 树结构,有一些是树节点,一些是叶子节点。 比如,文件夹树结构,一个是文件夹节点,一个是文件节点,虽然都是树的节点,但是具体的业务肯定是区别的。 代码: ...
分类:
其他好文 时间:
2016-10-16 01:26:23
阅读次数:
119
转载:递归建立二叉树 假设二叉树为: a b c d e 因为程序中要知道叶子结点(终点),所以要将上面的二叉树变成扩展二叉树 (把叶子结点的孩子补成#, 用作标记), 扩展后就变成了: a b c # d # e # # # # 那么,在输入的时候,需要输入: ab#d##C#e## (注意,输入 ...
分类:
其他好文 时间:
2016-10-15 22:01:43
阅读次数:
205
size_t _FindLeafSize(Node* root) //求二叉树叶子节点的个数 { //static size_t count = 0; if (root == NULL) return 0; if (root->_left == NULL&&root->_right == NULL) ...
分类:
其他好文 时间:
2016-10-15 19:41:33
阅读次数:
132
lyk有一棵树,它想给这棵树重标号。 重标号后,这棵树的所有叶子节点的值为它到根的路径上的编号最小的点的编号。 这棵树的烦恼值为所有叶子节点的值的乘积。 lyk想让这棵树的烦恼值最大,你只需输出最大烦恼值对1e9+7取模后的值就可以了。 注意一开始1号节点为根,重标号后这个节点仍然为根。 updat ...
分类:
其他好文 时间:
2016-10-13 19:17:07
阅读次数:
380
publicclassBinarytreedept{
/*
*输出二叉树最小深度
*核心思想:根节点到达最近的叶子节点的路径长度。
*1、当根为空时,输出0。
*2、当左子树为空时,输出右子树深度+1。
*3、当右子树为空时,输出左子树深度+1。
*4、以上条件都不满足时,输出min(左子树深度,右子树深度)+1..
分类:
其他好文 时间:
2016-10-13 15:13:48
阅读次数:
163
首先说下我写的线段树吧。 我是按照线段树【完全版】那个人的写法来写的,因为网上大多数题解都是按照他的写法来写。 确实比较飘逸,所以就借用了。 节点大小是maxn是4倍,准确来说是大于maxn的2^x次方的最小值的两倍。因为要pushUp的时候会去到一些无用的节点。 就是在叶子节点的时候还pushUp ...
分类:
其他好文 时间:
2016-10-13 02:45:22
阅读次数:
179
中序遍历 遍历顺序:左->中->右 二叉树特性: 在二叉树的第i层上至多有2的(i-1)次方个节点(i>=1) 深度为k的二叉树至多有2的k次方-1个节点(k>=1) 等比数列求和 对任何一颗二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则:n0 = n2 +1 终端节点即叶子节点,度为2 ...
分类:
其他好文 时间:
2016-10-11 21:51:54
阅读次数:
108