前序序列创建二叉树

article/2025/9/17 16:51:34

7-9 前序序列创建二叉树 (25 分)

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

输入格式:

多组测试数据,每组测试数据一行,该行只有一个字符串,长度不超过100。

输出格式:

对于每组数据,

输出二叉树的中序遍历的序列,每个字符后面都有一个空格。

每组输出一行,对应输入的一行字符串。

输入样例:(及其对应的二叉树

在这里插入图片描述

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

输出样例:

c b e g d f a 

上代码:

#include <bits/stdc++.h>
using namespace std;struct treeNode
{char Data;struct treeNode* left;struct treeNode* right;
};typedef struct treeNode* Node;
int N=0;
Node createTree(char *zfsz){if(*(zfsz+N)=='#'){N++;return NULL;}Node root=(Node)malloc(sizeof(struct treeNode));root->Data=*(zfsz+N);N++;root->left=createTree(zfsz);root->right=createTree(zfsz);return root;
}
void zhongxubianli(Node root)
{if(root==NULL)return;zhongxubianli(root->left);cout<<root->Data<<" ";zhongxubianli(root->right);
}
int searchNode(Node Root){if(Root==NULL)return 0;if(Root->left==NULL&&Root->right==NULL)return searchNode(Root->left)+searchNode(Root->right)+1;elsereturn searchNode(Root->left)+searchNode(Root->right);
}int main()
{char zfsz[101];while(scanf("%s",zfsz) != EOF){Node Root=createTree(zfsz);zhongxubianli(Root);N=0;cout<<endl;}return 0;
}

http://chatgpt.dhexx.cn/article/QEp1AhmP.shtml

相关文章

按照前序遍历创建二叉树及树的四种遍历方式

一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2&#xff0c;可以视为每个结点都有左孩子和右孩子。故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层&#xff0c;则第i层最多有个结点。 2.深度为k的二叉树最多有个结点。 3.对任何一个二叉…

LeetCode 144. 二叉树的前序遍历(前序遍历)

文章目录 1. 题目信息2. 解题2.1 递归2.2 循环&#xff0c;必须掌握 1. 题目信息 给定一个二叉树&#xff0c;返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1\2/3 输出: [1,2,3]进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 来源&#xff1a;力…

589. N 叉树的前序遍历(javascript)589. N-ary Tree Preorder Traversal

给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&#xff09;。 Given the root of an n-ary tree, return the preorder traversal of its n…

python中while用法

python中while用法 例子&#xff1a; a1 while a<10:print(a)a2输出结果&#xff1a; 这段代码的意思是&#xff1a;a的初始值是1&#xff0c;判断条件是&#xff1a;如果a<10&#xff0c;则打印a&#xff0c;之后在返回的a的基础上加2&#xff0c;&#xff0c;如果a&…

while函数用法 matlab,Matlab(七)while循环的使用

Rate this post 在前一节课我们学习了if判断语句&#xff0c;在这篇博客&#xff0c;我们来学习循环语句&#xff1a;while 在此先打出一段简单的while循环代码&#xff1a; x1; while x<4 disp(x); x x1; end 在这段代码中&#xff0c;先声明x 1 当X < 4的时候&#x…

【JAVA】while的用法。

public class While { public static void main(String[] args) {//while 循环语句//不断重复完成某件工作&#xff0c;有明确的结束条件//for do whileint num0;//计数器while(num<10){ if(num%21){ num;continue;}//num为比6大的偶数时&#xff0c;循环结束if(num…

while在Java用法_while和do-while的使用方法

while循环开始后&#xff0c;先判别条件能否满足&#xff0c;假如满足就执行循环体内的语句&#xff0c;执行终了后再回来判别条件能否满足&#xff0c;如此无限反复&#xff1b;直到条件不满足时&#xff0c;执行while循环后边的语句。简单来讲就是说while循环是先判别后循环&…

y-在C语言while语句中的意义,c语言while用法(C语言while用法)

C语言while用法 需要稍作修改 #include main() { 5261int a,b,c,d; double e0.0; //这里e要初始化 a1,b1,c1; //b要从1开始&#xff0c;要不然第一个算4102不上 while(b<100) { ec*1.0/b;//要不然是整数1653除以整数&#xff0c;值是整数&#xff0c;也就是0 bb1; c-c; } pr…

php do while(),php do while用法详解

php do while是一种循环语句&#xff0c;该循环语句保证会执行一次&#xff0c;其使用语法如【<?php $i 0;do {echo $i;} while ($i > 0);?>】&#xff0c;其循环语句将正好运行一次。 推荐&#xff1a;《PHP视频教程》 do-while (PHP 4, PHP 5, PHP 7) do-while 循…

while在c语言中的作用,while的用法_C语言中while的用法

c语言中while的用法 当n==1时执行while循环结构里的语句,当n不等于1时,则跳过该循环执行循环体外的语句。 while 循环的格式:while (表达式){语句;} while 循环的执行顺序:当表达式为真,则执行下面的语句,语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的…

PHP中用while的用法,php while语句的用法

在php中while语句指的是while循环语句&#xff0c;用于重复执行代码块&#xff0c;直到指定的条件不成立&#xff0c;其语法是【while (条件){要执行的代码;}】。 推荐&#xff1a;《PHP视频教程》 php while 循环 while 循环将重复执行代码块&#xff0c;直到指定的条件不成立…

三种循环语句的详解和使用(for,while,do-while)

对于刚接触编程的小可爱们&#xff0c;肯定会碰到这三种循环&#xff0c;书上写的有可能会过于专业化&#xff0c;会让我们感觉很难理解&#xff0c;在这里我就用最简洁明了的表达方式帮你理解并且学会使用这三种循环。 对于大佬们&#xff0c;读完你也许会新体会&#xff0c;新…

IO流(字符流)

IO流&#xff08;字符流&#xff09; 字符流 一.字符流是什么 字符流是可以直接读取字符的IO流字符流读取字符&#xff0c;就要先读去到字节数据&#xff0c;然后转为字符&#xff0c;如果要写出字符&#xff0c;需要把字符转为字节再写出 FileReader FileReader类的read(…

javaIO之字符流

目录 一、简介二、字符流入流1.1FileReader构造方法1.2FileReader读取字符数据 三、字符流出流3.1 FileWriter 构造方法3.2FileWriter写入数据3.3关闭close和刷新flush3.4FileWriter的续写和换行3.5文本文件复制 四、IO异常处理五、小结 一、简介 字符流 Reader 和 Writer 的故…

字符流定义及如何深入理解字符流的编码

IputSrem类和OupuSrem类在读写文件时操作的都是字节&#xff0c;如果希望在程序中操作字符&#xff0c;使用这两个类就不太方便&#xff0c;为此JDK提供了字符流。同字节流样&#xff0c;字符流也有两个抽象的顶级父类&#xff0c;分别是Reader和Writer其中&#xff0c;Reader是…

Java:字符流

字符流的底层其实就是字节流。 字符流字节流字符集 结构体系&#xff1a; 1.特点 输入流:一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流:底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 2.使用场景 对于纯文本…

java的字符流

字符流的底层也是字节流。字符流字节流字符集。 特点是输入流一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节&#xff08;读多少个与字符集有关&#xff09;&#xff1b;输出流底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 字…

java字符流

前言 输入流&#xff1a;把数据&#xff08;键盘输入、鼠标、扫描仪等等外设设备&#xff09;读入到内存&#xff08;程序&#xff09;中 输出流&#xff1a;把内存&#xff08;程序&#xff09;中的数据输出到外设或其他地方&#xff0c;从文件角度简单总结就是&#xff0c;输…

字符流

3.字符流 3.1为什么会出现字符流 由于字节流操作中文不是特别方便&#xff0c;所以Java就提供了字符流 字符流字节流编码表 用字节流复制文本时&#xff0c;文本文件也会有中文&#xff0c;但是没有问题&#xff0c;原因是最终底层操作会自动进行字节拼接成中文&#xff0c…