【数据结构】在二叉树中有两个结点m和n,若m是n的祖先,则使用后序遍历可以找到从m到n的路径

news/2024/11/24 5:36:20/

题干分析:

首先要注意题目中说到的路径,不是在visit()时得到的序列,而是看某时刻栈中的序列。这里的路径是这样理解的,访问一个结点 x 时,栈中结点恰好是 x 结点的所有祖先,从栈底到栈顶结点再加上 x 结点,这样就构成了从根结点到 x 结点的一条路径。
在王道数据结构P134中有讲到这句话。

比如先序遍历的非递归算法,在n进栈之前,m就已经出栈了。中序也是同样的。

  • 下面以先序为例,对照代码,演示一下栈中元素的出入栈过程。
    以此二叉树为例
void PreOrder(BiTree T){InitStack(S);BiTree p = T;while(p||!IsEmpty(S)){if(p){visit(p);Push(S,p);p=p->lchild;}else{Pop(S,p); //注意Pop操作!p=p->rchild;}}
}

1、p指向m结点,进入循环,p非空,将m入栈,p=p->lchild,p又指向了a结点。见图1。
2、满足条件,再进入循环,p非空,a入栈,p=p->lchild,此时p为null。见图2。
3、此时栈不为空,进入循环,p为null,栈顶元素a出栈时,p指向a结点,p=p->rchild 后,p还是为null。见图3。
4、此时栈还是不为空,进入循环,p为null,栈顶元素m出栈时,p指向m结点(注意在Pop(S,p)操作中,栈顶元素出栈时,p 是指向出栈的那个元素的,有一个赋值的步骤),p=p->rchild,p现在指向了b结点。见图4。(图中p是m出栈时的指向,p’是p->rchild赋值后的指向)此刻栈中元素为空。在n进栈之前,m就已经出栈了。栈中已经没有从m到n的路径了。所以先序遍历不适合。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

总结

中序遍历的非递归算法和先序相比只是 visit() 的位置不同,visit() 的位置不影响栈中的路径,所以先序、中序都不适合。只有后序遍历的非递归算法可以,当利用后序遍历到目标结点 n 时,栈中的序列就为 n 结点的全部祖先结点。(路径顺序是从栈底到栈顶!)
小伙伴们可以用文中此例自行验证后序非递归的过程。


http://www.ppmy.cn/news/561752.html

相关文章

正整数m的百位数字python_求正整数m的百位数字

【多选题】关于三阀组的使用,下列说法正确的是() (6.0分) 【多选题】下列流量计不能用于气体测量的是() (6.0分) 【填空题】执行下列Python语句将产生的结果是 。 m=True n=False p=True b1=m|n^p;b2=n|m^p print(b1,b2) 【多选题】关于超声波和雷达物位计,下列说法正确的是( )…

顺德农商银行服务器没有收到您的证书,农商行网上银行u盘插入,提示没有证书怎么回......

在登录农商银行网银的时候,电脑提示“服务器没有收到您的证书”。对于这种情况,请检查: uUSBKEY是否插在电脑上。 uUSBKEY驱动程序(即USBKEY管理工具)是否正在运行。 uUSBKEY中是否有证书。 u网银控件是否正常安装。 若上述情况全部正常&…

网上支付方式 ,网上支付方式有哪些

2010年03月16日   网上购物中施用的支付方式有许多种,网上银行是最基本的形式。比较常见的支付方式作一介绍:   一、支付宝   支付宝网站(www.alipay.com)是国内进步前辈的网上支付平台 ,由阿里巴巴公司创办,致力于为网络…

区块链应用场景有哪些?

现在ICO团队那么多,估计全球每天都冒几十个个出来,再多的钱也不够用啊!ICO的创始人信誉,应用,场景,技术团队,社区,开发更新等等都是一些考察要素。毕竟人是很健忘的,有其…

电子承兑汇票的状态有哪些

商业承兑汇票在不同的阶段也会处于不同的票据状态,而不同的状态所表示的意义也不相同。电子承兑汇票的状态有哪些?承兑汇票是有时间期限的,因此我们在做票据时需注意电子承兑汇票当前的状态,常见的电子票据状态一共有十二种&#…

银联银行卡交换系统8583报文解析

前言 最近在做8583报文这块解析,也遇到一些坑。下面将会介绍自己学习和了解8583报文这块的经验,希望可以帮到那些刚刚接触8583报文的同学们。 入门 首先我们需要知道的是我们的8583报文是基于POS(销售终端的)还是基于银联银行卡交换系统的报文。网上有…

智慧校园APP开发有哪些功能

随着科技的发展,传统的教育产业已经跟不上时代的步伐。为了解决教育行业的这一问题,智慧校园应用的开发应运而生。智慧校园APP开发通过科技的便利改善了校园服务。智慧校园APP开发打造互联网手机平台,通过智慧校园APP加强学生与学校的沟通&am…

物联网无线传输技术有哪些?

随着万物互联的时代到来,物体与物体之间的链接方式也在随着时代不断的发展。如果说传感器是物联网的触觉,那么无线传输技术就是物联网的神经系统,将遍布在物联网各处的传感器链接起来。在物联网出现之前,网络的接入需求主要集中在…