题目网址:https://www.nowcoder.com/questionTerminal/4b91205483694f449f94c179883c1fef
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
例如
输入:abc##de#g##f###
输出:c b e g d f a
其中空格字符串表示空树
其实这题的意思就是给你一棵二叉树先序遍历的结果,然后建立一个二叉树,再输出它中序的遍历结果。
如果只给我们一个先序的遍历结果,我们是无法建立起这棵树,
如何才能建立一棵树
- 给中序遍历结果和先序遍历结果
- 给中序遍历结果和后序遍历结果
但这题有点特殊,因为它用 # 代表了空树就可以建立起这颗树了
以题目的例子
abc##de#g##f###
用这个字符串还原一棵树,也是先序遍历,再递归创建左子树,递归创建右子树
这个例子:a为根节点,递归左子树,b为左子树根节点,再递归左子树,从为根节点……
这个过程自己试一下就会,就根先序遍历一颗树是一样的。
package package11_10;
import java.util.Scanner;
public class Test11_10 {
static class TreeNode{
public char val;
public TreeNode left;
public TreeNode right;
public T