首页 > 其他分享 >315二叉树扩展先序遍历转中序遍历

315二叉树扩展先序遍历转中序遍历

时间:2023-12-23 11:33:09浏览次数:38  
标签:inordertraverse 遍历 treenode tree 315 二叉树 先序

题目:二叉树扩展先序遍历转中序遍历

问题描述

编一个程序,读入用户输入的一串扩展先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的扩展先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入格式

        输入包括1行字符串,长度不超过100。

输出格式

        输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。

样例输入

        abc##de#g##f###

样例输出

        c b e g d f a

样例说明

根据给定的扩展先序遍历序列,建立对应的二叉树,然后对所得的二叉树进行中序遍历输出结果即可。


 

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct treenode
 5 {
 6     char data;
 7     struct treenode *lchild;
 8     struct treenode *rchild;
 9 }treenode,*tree;
10 
11 tree createTree();
12 void inordertraverse(tree t);
13 int main()
14 {
15     tree t;
16     
17     t=createTree();
18     inordertraverse(t);
19     
20     return 0;
21 }
22 tree createTree()
23 {
24     treenode *p;
25     char ch;
26     ch=getchar();
27     
28     p=(treenode *)malloc(sizeof(treenode));
29     if(ch=='#') p=NULL;//这里本来是return NULL很不舒服
30     else
31     {
32         p->data=ch;
33         p->lchild=createTree();
34         p->rchild=createTree();
35     }
36     return p;//只return一个
37 }
38 
39 void inordertraverse(tree t)
40 {
41     if(t)
42     {
43         inordertraverse(t->lchild);
44         printf("%c ",t->data);
45         inordertraverse(t->rchild);
46     }
47 }

 

主要是create函数

标签:inordertraverse,遍历,treenode,tree,315,二叉树,先序
From: https://www.cnblogs.com/xzdmzrc221202/p/17922823.html

相关文章

  • 314完全二叉树的子树
    题目:完全二叉树的子树问题描述对一棵完全二叉树,采用自上而下、自左往右的方式从1开始编号,我们已知这个二叉树的最后一个结点是n,现在的问题是结点m所在的子树一共包括多少个结点?输入格式       输入数据包括多行,每行给出一组测试数据,包括两个整数m,n(1<=m<=n<=10......
  • 23_合并二叉树
    617.合并二叉树给你两棵二叉树:root1和root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为null的节点将......
  • 429. N 叉树的层序遍历(中)
    目录题目题解:BFS题目给定一个N叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由null值分隔(参见示例)。题解:BFSclassSolution:deflevelOrder(self,root:'Node')->List[List[int]]:ifnotroot:......
  • 199. 二叉树的右视图(中)
    目录题目题解:BFS题目给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。题解:BFS用BFS,每一层最后一个弹出队列的元素加到结果列表里面classSolution:defrightSideView(self,root:Optional[TreeNode])->Lis......
  • 107. 二叉树的层序遍历 II(中)
    目录题目题解:BFS题目给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)题解:BFS用BFS把每层的结点存在一个单独的列表里,最后翻转整个结果列表classSolution:deflevelOrderBottom(self,root:Op......
  • 103. 二叉树的锯齿形层序遍历(中)
    目录题目题解:BFS题目给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。题解:BFS用BFS把每一层的结点存在一个列表里面,然后判断一下如果是偶数层就翻转列表,最后都加入结果列表返回即可classSo......
  • Java中的page集合的遍历(取值/赋值)
    Page<FwSjJbEntity>page1=newPage<>(page,pageSize);LambdaQueryWrapper<FwSjJbEntity>queryWrapper=newLambdaQueryWrapper<>();Page<FwSjJbEntity>jbEntityPage=newPage<FwSjJbEntity>();if(name==null||name.equals......
  • 二叉树
    一.二叉树的概念1.二叉树的性质二叉树的每个节点最多有两个子节点,分别称为左孩子和右孩子,以他们为根的子树称为左子树和右子树。二叉树的第i层最多有2^(i-1)个节点。如果每层的节点数都是满的,称他为满二叉树。图例:如果这个二叉树只是在最后一层有缺失,且......
  • 图(树)的广度优先遍历bfs
    图的广度优先遍历广度优先遍历,就是在遍历时优先考虑遍历的广度,不像深度优先那样一条路径遍历到底,而是一层一层的遍历。由于广度优先是一层一层节点的遍历,在图的边权值都为1的情况下,若我们要求出节点a到节点b的最短路,就可以以a为源点(source)进行广搜,当a第一次搜到b时,其路径一......
  • 图(树)的深度优先遍历dfs
    图的深度优先遍历深度优先,即对于一个图或者树来说,在遍历时优先考虑图或者树的单一路径的深度。示意图如下即深度优先搜索的核心就是对一个路径一直向下搜索,当搜索到头时就回溯到前一状态再寻找别的路深搜问题一般有两种情况,一种是搜索时元素只能用有限次,这需要我们定义一......