首页 > 编程知识 正文

中序遍历二叉树代码,二叉树的中序遍历怎么看

时间:2023-05-05 19:07:28 阅读:29998 作者:362

前两个介绍了二叉树的逻辑概念和前中后序输出递归代码的实现。 这里介绍了二叉树的分层遍历输出是如何实现的,以及二叉树的前序遍历输入这两种情况。

结构结构bi node { char data; BiNode *lchild,*rchild; (; 类型描述bi node * bi树; 空二叉树intinitbitree(bitreet ) { T=NULL; 返回0; )通过分层扫描输出二叉树的分层扫描的规则从根节点开始,从上向下从左向右分层扫描。

voidleveltraverse(bitreet ) {if ) t!=如果=null//t不是#则执行{ queueBiTree q; //新队列q团队中的元素类型为BiTreeQ.Push(T ); //T入队while (! q.empty () ) /如果队列不为空() { BiNode* node=q.front ) ); //删除队列中的第一个元素并将其分配给节点计数节点-数据; //输出node的值q.pop (; //拆下队列的第一个要素if (node-lchild!=NULL ) q.push(node-lchild ); 如果节点的sydjr不为空,则将sydjr入队到if (节点-循环!=NULL ) q.push(node-rchild ); 如果node的右子不为空,则使右子入队}}分层扫描代码是利用队列先进先出的特性实现的。 逻辑单元首先将根节点入队,使用front函数首先取出入队的根节点,将其输出并删除,然后将根节点的sydjr和右子节点分别入队; 在此情况下,队列的开头是sydjr,按照处理根节点的方法处理sydjr; sydjr稀疏后,队列的开头是右边的子节点,对右边的子节点进行同样的处理,然后按照sydjr的sydjr .这种想法稀疏一个根节点进入sydjr和右边的子节点,直到最后一层,在输出所有叶节点后,树中不需要元素因此,逻辑单元执行的条件是队列不为空。

总结一下代码的结构:

1、判断树不空后,定义队列,根排队

2、输出根节点并去除;

3、让sydjr和右子进入队伍;

4、队列为空时输出结束为止;

请注意,此处的根、sydjr和右子是相对的。 有些节点是其父节点的子节点,也是其子节点的根,因此根是子节点,并根据需要进行定义。

在前序扫描中输入二叉树方法是输入字符串由二叉树的虚拟节点表示的前序扫描顺序

char*createbitree(bitreet,char *str ) /约定)表示空节点if(*str=='# ' ),{ T=NULL; 返回str 1; //创建节点t=新bi node; T-data=*str; 继续输入和构建sydjr树和右子树char * strafterleft=createbitree (t-lchild,str 1); char * strafterright=createbitree (t-rchild,strAfterLeft ); //返回其馀字符串return strAfterRight; }这个段落的代码我的理解方法是用手执行一次。 这里举例的字符串是ab##c##。 建议手动执行不明白的地方再看我下面的说明。 不自己执行,只看别人的理解很难看。

*str指向a,a创建节点t,而不是#,t的值为a;

运行名为strAfterLeft1的行。 因为是str 1,所以str是指b。 b创建新节点,而不是#。 a-lchild的值为b。

再次运行名为strAfterLeft2的行时,由于是str 1,因此str为#,#为#,b-lchild为NULL,返回str 1,strAfterLeft2为#;

当运行strAfterRight2时,由于strAfterLeft2指向#,因此b-rchild为空,返回str 1以指向strAfterRight2,strAfterRight2以指向c

当运行strAfterRight1时,a-rchild的值为c,后续的右子树c的遍历与b相同,因为c创建的是新节点而不是#;

方法2输入是在样本数目和多个二叉树的虚拟节点上进行表示的前向顺序遍历顺序,或者在单个二叉树的虚拟节点上进行表示的前向顺序遍历顺序

语音创建器(bitreet ) { T=new BiNode; char q; cin q; if(q=='# ' ) t=空值; else{ T - data=q; manuallycreatetree(t-lchild; manuallycreatetree (叔车轮; }由于输入是二叉树虚拟节点表示的前相遍历顺序,因此构造了一个完全模拟二叉树前相遍历规律的函数,将字符逐个添加到二叉树中,最终用一根根构建整个树。

//这个内容到此结束。 欢迎批评指正(((() ) ) )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。