首页 > 编程知识 正文

二叉树中序遍历的定义是什么(二叉树前序中序后序非递归)

时间:2023-05-05 06:33:44 阅读:89135 作者:2004

已知

题目

二叉树的前相与ABDFGCEH的后相配列为BFDGACEH,输出后相与要求遍历到FGDBHECA

大体思路

又按先后顺序生根,先后根后是左边树的一部分,我们又在中间序列中找到了先后根,这里前是左边树,这里后是右边树。 然后递归就可以了。

代码

#包括stdio.h

# #包括stdlib.h

# #包含字符串. h

# #定义最大100

类型结构节点

字符数据;

结构节点*儿童;

结构节点*子;

二进制,*二进制树;

voidpretree (比特) /后输出树

{ if (t==空值)返回;

预备(叔子);

预备(叔子);

打印机(' % c ',叔数据);

}

角色预;

卡尔米德;

intmidfind (左、右、字符mid )。

{

for (英特尔=左; I=右; I ) )

{

返回I,即if (mid==mid );

}

返回0;

}

voidcreate(intleft、int right、int *i、BiTNode **T ) /在此问题创建树中,没有用户输入,无法确定何时将特定节点分配为空值,因此孩子的节点为空

//生成二叉树的最初写法(二阶段指针法) )。

//这种感觉将指针输入函数进行处理

* * t=(二叉树)三叉树)二叉树);

(t ) -数据=预[ * I ];

(t )-lchild=空值;

(t )-rchild=空值;

(I );

int mid编号=mid find (左,右,(*T ) -数据);

if (中频)

{

创建(左,中间编号- 1,I,) () ) ) ) ) -液晶)

}

if (中小企业) )。

{

创建(中间编号1,右,I,() ) () ) (-右)

}

}

bitnode * create2(左、右、右) ) )。

//第二中制作方式(注意返回! )

//这种感觉让函数处理指针(自己不进入) )。

比特节点* t;

t=(二叉树)三叉树(二叉树);

t -数据=预[ * I ];

t-lchild=空值;

t-rchild=空值;

(I );

int mid编号=mid find (左、右、叔数据);

if (中频)

{

t-lchild=创建2 (左,中间号- 1,I );

}

if (中小企业) )。

{

t-rchild=创建2 (中间号1,右,I );

}

返回t;

}

int主() )

{

memset (预,0,最大);

memset(mid,0,MAX );

gets (预);

gets(mid;

左、右、蓝、i=0;

len=strlen (预先;

左=0;

right=len-1;

bitnode * t=(二叉树)三叉树)二叉树); //在这里不分配空间也可以。 因为在函数中分配

创建(左,右,I,t );

修正(t;

返回0;

)如果不明白的话请问我。 对于准备学习编程的伙伴,如果你想更好地提高编程的核心能力(内功),请从现在开始。

共享编程学习手册:

编程学习的视频共享:

整理和共享(多年学习的源代码、项目实战视频、项目笔记、基础入门教程) ) ) ) )。

欢迎学习转行和编程的朋友,比起利用更多的资料自己思考,还是学习成长比较快哦。

如果对C/C感兴趣的话,请关注编辑并在后台私信。 【编程交流】一起学习哦。 可以收到一些C/C的项目学习视频资料哦! 因为设定了关键字自动回复,所以自动接收就好了!

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