![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 63
超分辨菜鸟
这个作者很懒,什么都没留下…
展开
-
二叉搜索树
二叉搜索树二叉搜索树概念结构特性实现二叉搜索树概念二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进原创 2021-06-16 19:07:23 · 94 阅读 · 0 评论 -
JAVA-堆相关
二叉树:1.概念树是非线性的数据结构,有n个有限节点组成一个具有层次关系的集合,看起来像一个倒挂的树根节点无前驱节点,其余节点被分成M个互不相交的集合T1,T2…Tm,每个集合又是一棵与树类似的子树,每棵子树的根节点只有一个前驱节点,可以有0个或多个后继节点。树是递归定义的节点的度:一个节点含有的子树的个数称为该节点的度—>树的度为最大节点的度,叶子节点也称为终端节点,度为0的节点,深度:该节点到根高度:该节点到叶子节点二叉树一颗二叉树是节点的一个有限集合,该集合或为空或有一个根原创 2021-06-02 21:16:43 · 69 阅读 · 3 评论 -
JAVA-二叉树习题
二叉树相关习题概念树1.概念树是非线性的数据结构,有n个有限节点组成一个具有层次关系的集合,看起来像一个倒挂的树根节点无前驱节点,其余节点被分成M个互不相交的集合T1,T2…Tm,每个集合又是一棵与树类似的子树,每棵子树的根节点只有一个前驱节点,可以有0个或多个后继节点。树是递归定义的节点的度:一个节点含有的子树的个数称为该节点的度—>树的度为最大节点的度,叶子节点也称为终端节点,度为0的节点,深度:该节点到根高度:该节点到叶子节点二叉树一颗二叉树是节点的一个有限集合,该集合原创 2021-06-02 20:59:27 · 1296 阅读 · 6 评论 -
JAVA-牛客-求节点a和b的最近公共祖先
题目描述有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先测试输入:2,3返回:1分析:对于一棵完全二叉树->,其根节点为子节点/2,想要找到公共祖先,就得从大的节点开始寻找其根节点,若找到一个根为小节点或这为小节点的根就停止;举个例子:10和8的公共祖先为2;首先求10的原创 2021-04-23 11:19:37 · 210 阅读 · 0 评论 -
JAVA-剑指offer-二叉搜索树的后序遍历
二叉搜索树的后续遍历题目二叉搜索树的后续遍历输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5/ \2 6/ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true来源:力扣(LeetCode)分析二叉搜索树的定义是左子树所有节点小于根节点,右子树所有节点值大于根节点,且原创 2021-04-02 16:47:18 · 84 阅读 · 1 评论 -
JAVA-牛客-简单-平衡二叉树
平衡二叉树平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。示例1输入:{1,2,3,4,5,6,7}返回值:true分析平衡二叉树要求每个子树都为平衡二叉树,按照题目要求,首先判断当前节点是否为平衡二叉树,要求其左右子树节点相差不超过1在子树深度原创 2021-03-28 21:19:08 · 102 阅读 · 1 评论 -
JAVA-牛客-简单-二叉树的深度
二叉树的深度二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入:{1,2,3,4,5,#,6,#,#,7}返回值:4题目分析:给定一个二叉树,求其深度,题目给出了一个根节点,需要求出二叉树的深度,就是求二叉树最深的节点,由二叉数的原理可知:每次当左右节点都为空时,就到了此节点的最高位置,通过递归解此题较为简单,与二叉树的遍历原理相同,首先,给一个值保存当前的深度depth=0,从原创 2021-03-28 19:24:03 · 100 阅读 · 0 评论 -
JAVA-牛客-重建二叉树
重建二叉树重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。分析通过前序遍历和中序遍历去重建二叉树前序遍历代表根在最前方,中序遍历根在其左子树和右子树的中间。我们通过创建根节点的方式去重建整个二叉树,要用根来创建二叉树,需要对前序进行遍历,整个问题可以化分为数个子问题进行解决。创建一个二叉树,首先创原创 2021-03-24 17:07:18 · 110 阅读 · 0 评论 -
JAVA-基础-优先级队列(堆)
1.优先级队列:堆使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。在存储二叉树的数组中:已知双亲(parent)的下标,则:左孩子(left)下标 = 2 * parent + 1;右孩子(right)下标 = 2 * parent + 2;已知孩子(不区分左右)(child)下标,则:双亲(parent)下标 = (child - 1) / 2;2.堆heap的概念堆逻辑上是一棵原创 2021-01-30 11:14:57 · 131 阅读 · 0 评论 -
JAVA-完全二叉树的判断
1.完全二叉树首先了解什么样的二叉树是完全二叉树:完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。下面用几个例子来表示一下:从上图可以总结出,完全二叉树的特点:1.与对应的满二叉树的节点序号可以对应,这也就是说:按照层序遍历完全二叉树,将每个节点存储到栈中,这些节点中间是不存在null节点的2.非完全二叉树往往中间存在空节点,而完全二叉原创 2021-01-28 16:50:02 · 1239 阅读 · 0 评论 -
JAVA-LeetCode-简单题617-合并两个二叉树
1.题目给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:Tree 1 Tree 21 2/ \ / \3 2原创 2021-01-26 21:10:40 · 165 阅读 · 0 评论