一、题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1 ...
分类:
其他好文 时间:
2019-02-10 15:07:05
阅读次数:
148
二叉树: 叶子节点:没有左孩子也没有右孩子 叶子节点的个数 = 左子树叶子节点个数 + 右子树叶子节点个数 树的高度 : 1.求根节点左子树的高度,再求根节点右子树的高度,比较子树的最大高度再加 1; 2.若左子树还是树,重复步骤1;若右子树还是树,重复步骤1 拷贝二叉树 树的非递归遍历 (中序遍历 ...
分类:
其他好文 时间:
2019-02-01 23:01:30
阅读次数:
240
题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值。 教主最喜欢333种树,这3种树的高度分别为10,20,3010,20,3010,20,30。教主希望这一圈树种得有层次感,所以 ...
分类:
其他好文 时间:
2019-01-23 11:34:41
阅读次数:
189
删除二叉搜索树的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 说明: 要求算法时间复杂度为 O(h),h 为树的高度。 示例: ro ...
分类:
其他好文 时间:
2019-01-15 10:45:27
阅读次数:
199
假设一个二叉查找树中的数据都是链式的(即都集中在左子树或者右子树),那么这时候对该二叉查找树进行查找的时间复杂度就是$O(n)$,背离了二叉查找树用来优化数据查询的目的。而平衡二叉树可以使树的高度在每次插入元素后,查询操作仍然能保持$O(logn)$的时间复杂度。 对平衡二叉树的任意结点来说,要保证 ...
分类:
其他好文 时间:
2019-01-11 20:07:12
阅读次数:
221
二叉查找树的特点: 在二叉查找树中左子树上所有结点的数据都小于等于根结点的数据,而右子树上所有结点的数据都大于根结点的数据 二叉查找树的删除 一般有两种常见做法,时间复杂度都是$O(h)$,h是二叉查找树的高度。为了保证删除之后仍然是二叉查找树。 一种方法是以树中比删去数小而又最大的结点(称为该结点 ...
分类:
其他好文 时间:
2019-01-11 20:00:46
阅读次数:
148
平衡树 平衡树有AVL树、红黑树、2-3树、2-3-4树 AVL树 AVL树是最早的一种平衡树,它以发明者的名字命名。 特征 在AVL树中节点的左子树和右子树的高度差不会大于1 实现 在AVL树中每个节点都存储着一个额外的数据,它的左子树和右子树的高度差,这个差值不能大于1。插入一个元素后,检查该元 ...
分类:
其他好文 时间:
2019-01-03 17:25:17
阅读次数:
194
第一种实现 每一个节点都只是指向根节点 find是 常数时间复杂度的, union是 线性时间复杂度的。 第二种实现 每一个节点指向一个和自己在相同集合中的节点 find操作是树的高度时间复杂度,union操作也是 树的高度时间复杂度 第三种实现其实是第二种实现的改良版本 因为第二种实现,当树的高度 ...
分类:
其他好文 时间:
2019-01-02 10:37:17
阅读次数:
163
AVL树即平衡二叉树,每个结点有一个平衡因子,即左子树高度减去右子树高。每插入一个结点时,从根部开始按二叉排序树的方法,与节点不断比较,按大小向左右子树插入。在与最后的节点比较后插入时,若有兄弟节点,说明树的高度没有变,此时依然平衡;若没有,则小范围内树高改变了,需回溯,依次更改祖先的平衡因子,若遇 ...
分类:
其他好文 时间:
2018-12-30 12:07:34
阅读次数:
236
一、索引的资源消耗分析 1、索引三大特点 1、小:只在一个到多个列建立索引 2、有序:可以快速定位终点 3、有棵树:可以定位起点,树高一般小于等于3 2、索引的资源消耗点 1、树的高度,顺序访问索引的数据页,索引就是在列上建立的,数据量非常小,在内存中; 2、数据之间跳着访问 1、索引往表上跳,可能 ...
分类:
数据库 时间:
2018-12-27 03:09:58
阅读次数:
205