![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
文章平均质量分 91
允歆辰丶
一个平平无奇的码农
展开
-
二叉树的堂兄弟节点
在二叉树中,根节点位于深度0处,每个深度为k的节点的子节点位于深度k+1处。如果二叉树的两个节点深度相同,但,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点root,以及树中两个不同节点的值x和y。只有与值x和y对应的节点是堂兄弟节点时,才返回true。否则,返回false。原创 2023-04-22 21:03:38 · 1066 阅读 · 23 评论 -
序列化和反序列化二叉树 -----前序,中序,后序,层序
序列化(Serialization)是将对象转化为字节序列的过程,方便数据在网络传输和存储过程中的传递。在序列化过程中,对象的状态信息被转换为可以存储或传输的格式(如字节数组、XML、JSON等),以便在需要时能够将其反序列化为原始对象。序列化可以用于在不同的系统之间传输对象,或者将对象存储到磁盘上等。反序列化(Deserialization)则是将序列化后的字节流还原成对象的过程,即恢复原始的对象状态信息。原创 2023-04-12 17:08:34 · 1495 阅读 · 22 评论 -
Java之二叉搜索树(BST)
(Binary Search Tree,简称因为二叉搜索树具有上述的性质,所以可以等操作。在二叉搜索树中,一个元素的,其中n是树中节点的个数。同时,在二叉搜索树中,可以按照某种顺序(如)输出树中的所有节点,因此也可以作为一种的方法。原创 2023-04-11 00:10:15 · 1176 阅读 · 19 评论 -
Java之堆和堆排序
堆排序是一种基于堆数据结构的排序算法,它的时间复杂度为O(n log n)。堆排序的核心思想是将待排序序列构造成一个堆,然后依次将堆顶元素与堆底元素交换,再对剩余的元素重新构造成堆,直到所有元素都有序。由于堆排序是基于完全二叉树的,因此可以使用数组来表示堆,从而节省了树的指针空间的开销。大根堆和小根堆。在大根堆中,父节点的值大于等于任何一个子节点的值,在小根堆中则相反,父节点的值小于等于任何一个子节点的值。因此,大根堆可以用来进行升序排序,而小根堆则可以用来进行降序排序。堆排序的主要优点是稳定性好。原创 2023-04-04 12:33:02 · 1265 阅读 · 43 评论 -
树的前序遍历与中序遍历构造二叉树和树的中序遍历与后序遍历构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。大致的顺序如下:没有一步步递归,只画出了关键的步骤其实不加 if(index==preorder.length)return null;判断也没有错,只不过加上更加直观。答案是不行的,我们观察前面两个题目可以知道:我们最关键的在于寻找根结点,并找到它的左子树的结点范围和右子树结点范围,但是根据前序和后序遍历,第一次我们可以找到根原创 2023-03-30 09:52:01 · 2280 阅读 · 31 评论 -
详解线段树 ---更新查询
线段树是一种经典的数据结构,用于处理区间查询问题,例如区间求和区间最小值区间最大值等。它的基本思想是将区间递归地划分为若干个子区间,并将每个子区间的信息保存在一个节点中,从而形成一棵树形结构,即线段树。线段树的每个节点都代表一个区间,如果该节点表示的区间与待查询的区间有交集,那么该节点保存的信息就可能对查询有用。因此,在查询时,只需要访问与待查询区间相交的节点即可,而不需要访问整棵树。线段树通常使用数组来实现,其空间复杂度为 O(n),其中n是区间的长度。原创 2023-03-18 12:04:07 · 895 阅读 · 16 评论 -
树的遍历方式(前中后,层序遍历,递归,迭代,Morris遍历)-----直接查询代码
在进行使用栈进行迭代的时候,我们是先入栈右节点,然后入栈左节点,这样做是和栈的结构进行匹配的,因为栈是先进后出的结构,所以先入栈右节点,再入栈左节点,这样出栈的时候左节点才能先出栈。第三次:出栈顶元素2,stack={3},入栈2的右节点,入栈2的左节点.stack={3,5,4}第四次:4结点出队列,4的左节点入队列,5结点出队列,5的右节点入队列,queue={6,7}第四次,出栈顶元素4,stack={3,5},入栈4的左节点6,stack={3,5,6};第一次:先入栈1,stack={1}原创 2023-03-16 15:23:36 · 983 阅读 · 11 评论 -
树的前中后序的Morris遍历
Morris遍历是一种用于二叉树遍历的算法,它可以在不使用栈或队列的情况下实现中序遍历。该算法的时间复杂度为O(n)空间复杂度为O(1)。前序和中序的遍历很想,只不过在打印(收集结点信息的时候不同),中序遍历是在当前结点的左节点为空(curr.left==null),或者当前结点已经被线索化(prev.right==curr)的时候进行打印,仔细观察前序遍历的过程,我们通过修改打印的顺序即可.前序遍历是在当前结点的左节点为空(curr.left==null),或者当前结点没有被线索化(prev.right=原创 2023-03-15 23:57:53 · 1609 阅读 · 14 评论