1.什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型。 最大堆—最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。 最小堆—最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。 二叉堆的根节点叫做堆顶。 最大堆和最小堆的特点决定了:最大堆堆顶是整个堆中的最大元素;最 ...
分类:
其他好文 时间:
2020-07-30 14:04:44
阅读次数:
66
利用Java语言实现七大经典排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序以及快速排序。 分类 类别 算法 插入排序类 插入排序、希尔排序 选择排序类 选择排序、堆排序 交换排序类 冒泡排序、快速排序 归并排序类 归并排序 复杂度 算法 平均情况 最好情况 最坏情况 辅助空间 稳 ...
分类:
编程语言 时间:
2020-07-30 01:51:43
阅读次数:
111
数据结构--二叉树(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 树的常用术语(结合示意图理解) 节点 根节点 父节点 子节点 叶子节点 (没有子节点的节点) 节点的权(节点值) 路径(从root节点找到该节点的路 ...
分类:
编程语言 时间:
2020-07-30 01:09:31
阅读次数:
89
一、零铺垫 在介绍B树之前,先来看另一棵神奇的树——二叉排序树(Binary Sort Tree),首先它是一棵树,“二叉”这个描述已经很明显了,就是树上的一根树枝开两个叉,于是递归下来就是二叉树了(下图所示),而这棵树上的节点是已经排好序的,具体的排序规则如下: 若左子树不空,则左子树上所有节点的 ...
分类:
数据库 时间:
2020-07-29 21:54:05
阅读次数:
91
平衡二叉树-双旋转 左右旋转 ? 在某些情况下,单旋转不能完成平衡二叉树的转换 针对于左右型(LRR,LRL) 右左旋转 针对于右左型(RLL,RLR) ...
分类:
其他好文 时间:
2020-07-29 21:47:19
阅读次数:
60
思路: 公共祖先需要分为三种情况: 1.pq包含在root的左右子树中,则root就是他们公共祖先 2.pq包含在root的右子树中,则公共祖先是右子树 3.pq包含在root的左子树中,则公共祖先在左子树 代码: /** * Definition for a binary tree node. * ...
分类:
其他好文 时间:
2020-07-28 17:01:57
阅读次数:
59
概念 线段树是一棵二叉树,线段是上每个结点对应的是序列的一段区间。如图(以下图片为引用) 容易发现,根节点对应的是整个区间[0,n-1].若一个结点对应的区间为[l,r],当l=r时,它是一个叶结点,没有左右儿子;否则他一定有两个儿子,令mid=(l+r)/2,则左儿子对应的区间为[l,mid],右 ...
分类:
其他好文 时间:
2020-07-28 16:49:56
阅读次数:
55
1.1题目 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。 1.2解答 很显然是二叉树的遍历问题。遍历每个点然后返回当前点的深 ...
分类:
其他好文 时间:
2020-07-28 10:07:40
阅读次数:
59
从上到下打印二叉树,引用辅助队列。 C++版本 #include <iostream> #include <vector> #include <stack> #include <cstring> #include <queue> #include <algorithm> using namespac ...
分类:
其他好文 时间:
2020-07-28 10:00:15
阅读次数:
73
思路: 中序:左->根->右 1.需要一个建立一个栈,首先将左子树放入栈中 2.获取栈顶元素并进行节点判断是否有右子树 3. 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode ...
分类:
其他好文 时间:
2020-07-27 23:50:51
阅读次数:
62