![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Morris遍历
文章平均质量分 56
Morris遍历
爱敲代码的Harrison
种一棵树最好的时间是十年前,其次是现在。
展开
-
Morris遍历练习——二叉树的最小深度
题目给定一棵二叉树的头节点head,求以head为头的树中,最小深度是多少?树的深度概念:头节点到叶节点的高度树的最小深度:头节点到所有叶节点的最小高度可以用二叉树的递归套路的方法,也可以用Morris遍历的方法。Morris遍历的方法关键在于:1)当cur指针来到某个结点的时候,如何知道这个结点在第几层?也就是说有个变量level,当cur来到某个结点的时候,level要实时更新所在的层数。2)如何发现cur来到了叶节点?但是问题是Morris遍历把二叉树改乱了。3)最后检查一下整棵树的最原创 2022-03-31 22:30:53 · 615 阅读 · 0 评论 -
Morris遍历练习——判断一棵树是否是搜索二叉树
正常方法:中序遍历后,一直升序就是搜索二叉树。还可以用二叉树的递归套路的方法——二叉树的递归套路——搜索二叉树Morris遍历的方法:注意:一旦发现不是搜索二叉树为什么不直接返回false,而是用变量记住结果?因为Morris遍历会将树改乱,所以要等Morris遍历完以后,树恢复成为原来的样子,再返回结果。package com.harrison.class20;/** * @author Harrison * @create 2022-03-31-15:12 * @motto 众里寻他千原创 2022-03-31 15:25:14 · 113 阅读 · 0 评论 -
Morris遍历
Morris遍历一种遍历二叉树的方式,并且时间复杂度O(N),额外空间复杂度O(1)。通过利用原树中大量空闲指针的方式,达到节省空间的目的。Morris遍历的关键利用一棵树上大量的右指针空闲空间Morris遍历细节假设来到当前节点cur,开始时cur来到头节点位置如果cur没有左孩子,cur向右移动(cur = cur.right)如果cur有左孩子,找到左子树上最右的节点mostRight :a. 如果mostRight的右指针指向空,让其指向cur,然后cur向左移动(cur =原创 2022-03-31 14:53:09 · 3640 阅读 · 1 评论