AVL树 自平衡树:AVL树是一颗二分搜索树,同时左右子树的高度差不超过1,AVL是自平衡的 主要是通过左旋和右旋来维护平衡 统计一本书中共出现多少个单词,每个单词出现了多少次:使用AVL树实现Set和Map,Set用于统计共出现了多少个不同的单词,Map用于容纳每个单词出现的次数。 AVLTree ...
分类:
其他好文 时间:
2020-01-01 12:08:26
阅读次数:
98
二叉排序树定义 一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。 二叉树删除节点 二叉排序树删除节点的时候为其删除后还是 ...
分类:
其他好文 时间:
2019-12-29 18:41:47
阅读次数:
70
题目: 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 分析: 从根结点开始递归对比左右子树即可。需要注意的是,当前左右两个结点相同比较下面的结点时,由于是判断二叉树是否是对称的,递归执行时,比较的两个结点是当前左结点的左结点和当前右结 ...
分类:
编程语言 时间:
2019-12-29 15:20:56
阅读次数:
71
二叉搜索树 二叉搜索树很明显来自于一种思想:二分查找。 二叉搜索树 很明显: 二叉搜索树并不要求是一棵完全二叉树 则左子树上所有结点的值均小于它的根结点的值;右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉搜索树。 对于二叉搜索树而言,有以下典型的操作: 1 插入,删除 2 查... ...
分类:
其他好文 时间:
2019-12-23 20:34:48
阅读次数:
82
题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。 这道题比较考验思维。平衡二叉树的条件是左、右子树的深度差不大于1,所以我们首先需要计算出二叉树的深度。而这道题需要返回的并不是深度,而是一个布尔值,因此我们初始认为这棵树是平衡的,在计算深度的过程中,如果发现左、右子树的深度大于1了,就将答案置为 ...
分类:
其他好文 时间:
2019-12-23 13:12:29
阅读次数:
113
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 首先特判一下这棵树是不是空的,如果是空,那么返回true。 因为判断二叉树的镜像,我们要看它的左、右子树,所以递归函数dfs的参数应该有两个,一个是左子树的根节点,一个是右子树的根节 ...
分类:
其他好文 时间:
2019-12-23 13:06:59
阅读次数:
64
236. Lowest Common Ancestor of a Binary Tree - 若p和q分别位于左右子树中,那么对左右子结点调用递归函数,会分别返回p和q结点的位置,而当前结点正好就是p和q的最小共同父结点,直接返回当前结点即可,这就是题目中的例子1的情况。 - 若p和q同时位于左子树 ...
分类:
其他好文 时间:
2019-12-23 13:05:41
阅读次数:
86
题目: 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 分析: 可以从根节点开始遍历每一个节点,求得节点左右子树的最大高度,判断是不是平衡二叉树。这样做的问题在于会重复遍历节点,造成不必要的浪费。 所以可以采用后续遍历来求解此题,判断子树是否是平衡二叉树,如果是,就返回子树的最大高度,不是的话,就中 ...
分类:
编程语言 时间:
2019-12-16 22:54:44
阅读次数:
162
题意: 给出一个数字序列,有6种操作: (1) ADD x y d: 第x个数到第y个数加d 。 (2) REVERSE x y : 将区间[x,y]中的数翻转 。 (3) REVOLVE x y t :将区间[x,y]旋转t次。 (4) INSERT x p :在第x个数后面插入p 。 (5)DE ...
分类:
其他好文 时间:
2019-12-10 01:13:16
阅读次数:
127
1. 堆排序 算法核心思想 堆排序利用堆的特点, 最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子,那么处于最大堆的根节点的元素一定是这个堆中的最大值,每次把堆顶元素放置在二叉树的尾部,然后重新建堆这样循环处理,最终就能完成排序。 核心算法逻辑如下: 建堆 把堆顶的元素和最 ...
分类:
编程语言 时间:
2019-12-09 21:22:00
阅读次数:
86