
Morris遍历
小胡同的诗
千里之行,始于足下
展开
-
LeetCode144 二叉树的前序遍历(Morris遍历 | 非递归栈遍历)
题目链接:leetcode144题面题目大意略解题思路大致方法有递归、利用栈实现非递归以及Morris遍历,对于Morris遍历可以看这篇文章 传送门。其中递归和非递归栈空间复杂度都是 O(log2n)O(\log_2n)O(log2n) ,Morris 遍历空间复杂度为 O(1)O(1)O(1) 。代码实现Morris 遍历/** * Definition for a binary tree node. * struct TreeNode { * int val;原创 2020-09-26 23:33:02 · 282 阅读 · 0 评论 -
二叉树Morris遍历
前言二叉树的遍历方式按顺序划分可分成前序、中序、后序遍历,其中,遍历的时间复杂度为 O(n)O(n)O(n),空间复杂度为 O(logn)O(logn)O(logn)。在部分情况下,例如二叉树退化成链表,空间复杂度为 O(n)O(n)O(n),这是因为无论是递归或者是非递归的遍历方式,都避免不了栈的开销。非递归只不过是把系统的递归栈自己手动实现罢了。Morris 遍历可以在增加时间复杂度的常数,但是实际的时间复杂度仍然是 O(n)O(n)O(n),把空间复杂度优化到 O(1)O(1)O(1),并实现二叉原创 2020-09-16 14:21:38 · 258 阅读 · 0 评论