Skip to content

Commit 7cfbcc6

Browse files
author
robot
committed
2 parents 6a849ef + 5e26602 commit 7cfbcc6

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

thinkings/tree.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ class Solution:
212212
![](https://tva1.sinaimg.cn/large/0081Kckwly1gkq01o7423j31gg0u0dwg.jpg)
213213
(前中后序遍历只需要调整这三句话的位置即可)
214214

215+
> 注:这张示意图的前序和后序画反了
216+
215217
可以看出使用三色标记法,其写法类似递归的形式,因此便于记忆和书写。
216218

217219
有的同学可能会说,这里的每一个节点都会入栈出栈两次,相比普通的迭代入栈和出栈次数整整加了一倍,这性能可以接受么?我要说的是这种时间和空间的增加仅仅是常数项的增加,大多数情况并不会都程序造成太大的影响。 除了有时候比赛会比较恶心人,会**卡常**(卡常是指通过计算机原理相关的、与理论复杂度无关的方法对代码运行速度进行优化)。反过来看,大家写的代码大多数是递归,要知道递归由于内存栈的开销,性能通常比这里的二色标记法更差才对, 那为啥不用一次入栈的迭代呢?更极端一点,为啥大家不都用 morris 遍历 呢?

0 commit comments

Comments
 (0)