二叉树之Morris遍历

本文介绍了二叉树的Morris遍历方法,该方法通过特殊方式避免使用回溯,将空间效率提高到O(1),时间效率保持在O(N)。详细解析了Morris遍历过程,包括其核心思想、具体步骤,并总结了Morris遍历在前序、中序和后序遍历中的应用。
摘要由CSDN通过智能技术生成

1、Morris遍历的核心思想

下面介绍莫里斯算法的核心思想:
通过递归和迭代遍历二叉树的核心是回溯,通过回溯已经经过的节点,比如左子树遍历完了,回溯到根节点去遍历右子树,而莫里斯算法对于回溯的实现采用了一种特殊的办法。优点:使得空间效率从O(n)变成了O(1),时间效率依旧是O(N)。

2、moriis遍历的过程

(1)当前节点为cur(即下图中的蓝色箭头),cur来到整个树的头

        1)cur无左树时,cur = cur->right;

        2)  cur有左树时,找到左树(即下图中的黑色箭头)上的最右节点(mostright)

                a. mostright的右指针若是指向NULL:

                        mostright->right = cur; cur  = cur->left;

                b. mostright的右指针若是指向cur:

                        mostright->right = null; cur = cur->right;

        3) 直到cur = NULL为止

(2) 对下图的遍历过程进行简单的描述

      (1)初始状态:cur = root; mostright = root->left;

        (2):判断有无左树, 有左树则mostright来到了左树的最右节点:最右节点(mostright->right)为NULL,则mostright->right = cur;

        (3):cur = cur->left; mostright = cur->left;

        (4):重复(2)

        (5): cur = cur->left; mostright = cur->left(NULL);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值