2016 - 2024

感恩一路有你

js遍历树形结构数组 树状数组的几种用法?

浏览量:1123 时间:2021-03-11 11:35:08 作者:admin

树状数组的几种用法?

假设数组的长度为n,线段树和树数组的基本功能是在满足约束律的一定运算(如加法、乘法、最大值、最小值)下,修改单个元素,并在o(logn)时间复杂度内保持区间信息。不同的是树数组只能维护前缀“运算和”(前缀和、前缀积、前缀max min),而段树可以维护区间运算和。但有些运算有逆元素,这给人一种错觉,认为树数组可以保持区间信息:保持区间和、模素数意义上的区间积、区间异或和。这样做的实质是取右端点的前缀和,然后对左端点的前缀和的逆做一个操作,所以树数组的区间查询实际上是两个前缀和查询。可见树数组可以保留某些运算的区间信息,但不能保留其它运算的区间信息:Max/min值,模非素数意义下的乘法,因为这些运算中没有逆元素,所以不能使用两个前缀的和。但是片段树是不同的。分段树直接维护区间信息,所有满足组合规则的操作都可以维护区间和,而懒标记的存在也使得分段树支持区间修改,这是树数组所不能做到的。可以说树数组所能做的实际上是线段树的子集。在大多数情况下,真正使用树数组仅仅是因为它易于编写,而且它的常量很小。然而,随着zkw段树的流行,树数组仅有的两个优点已经不复存在了,我想这将是一个巨大的挑战。兴趣相关:弱省、弱校、弱菜。我们只能讨论一些基本功能。请不要在这个答案中谈论树数组的高级用法,因为我还没有学会

定义:如果二叉树的深度设置为h,则除h层外,每层(1-h-1)中的节点数达到最大值,h层中的所有节点都连续地集中在最左边,这是一个完整的二叉树。

所以,第一行有1=2^0,第二行有2=2^1,依此类推,第n行有2^(n-1)

那么总数是一个等比序列,前n行有2^n-1

很明显,一维数组是按下标顺序表示的,我们可以找到在完全二叉树中的位置

假设数组从a[1]开始,例如a[25],25=15 10=(2^4-1)10,那么a[25]是第四个1=5行中的第10个数

你的意思是以数组的形式存储二叉树,这需要利用完全二叉树的特性树。完全二叉树通常用数组代替链表进行存储,其存储结构如下:树:数组[1.. n] 在树[i]的最长{n:integer n>=1}中,它具有以下特征:(1)如果i是奇数且i>=1,则树的左兄弟是树[i-1];(2)如果i是偶数且i

js遍历树形结构数组 js递归遍历树结构 数组构造二叉搜索树

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。