使用递归,如果下一个节点为空就跳出当前方法,不断递归,取出最内的值然后依次去除最外的值
![](https://i-blog.csdnimg.cn/blog_migrate/0a60134b08d9c0ead391f98c66a79880.png)
先使用单向链表,存储左节点,然后再依次弹出,查看是否有右节点,有则再次进循环判断,直到所有元素全部保存集合
![](https://i-blog.csdnimg.cn/blog_migrate/a01ba8580e5423e5da3aadb1f49723d5.png)
Morris 中序遍历
降低空间复杂度,如果root左节点不为空,先往左走一步,然后再去拿左节点内的最右节点,如果为空,则把root指向右节点,并且把root往左移动一位,如果不为空,则把右节点赋空,并且把root右移;如果root左节点为空,将值存入数组,并且走有节点。
![](https://i-blog.csdnimg.cn/blog_migrate/9b0fc154062e57a1852c141895635840.png)
使用递归,如果下一个节点为空就跳出当前方法,不断递归,取出最内的值然后依次去除最外的值
先使用单向链表,存储左节点,然后再依次弹出,查看是否有右节点,有则再次进循环判断,直到所有元素全部保存集合
降低空间复杂度,如果root左节点不为空,先往左走一步,然后再去拿左节点内的最右节点,如果为空,则把root指向右节点,并且把root往左移动一位,如果不为空,则把右节点赋空,并且把root右移;如果root左节点为空,将值存入数组,并且走有节点。