根据前序的字符串创建出二叉树

该博客介绍如何根据给定的先序遍历字符串构建二叉树,并实现中序遍历输出。题目提供了一个字符串,其中‘#’代表空树。通过递归方法,按照先序遍历的规则(根-左-右)构建树,然后进行中序遍历(左-根-右)并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目网址: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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值