2023华为od统一考试B卷【二叉树中序遍历】

前言

博主刷的华为机考题,代码仅供参考,因为没有后台数据,可能有没考虑到的情况

如果感觉对你有帮助,请点点关注点点赞吧,谢谢你!

题目描述

思路

0.用Character数组存储树,index下标的左右子树下标是index*2+1,index*2+2

1.用一个栈来保存父亲节点:在操作{}内部的数据时入栈(也就是碰到"{"时)

2.遇到 {, 的情况就是直接是index的左子树为空,右子树存在index=index*2+2

3.遇到 { 情况,(没有和 , 连接)index的左子树index=index*2+1

4.遇到 , 的情况:如果是左右两个子树都存在,index指向左子树,index++就ok

  1. 遇到 } 出栈 index=出栈元素也就是父亲节点

  2. 遇到节点字符(字母)写入Character数组

7.中序遍历(比较简单,递归实现)

  1. 这道题难在处理字符串构建二叉树

代码

java 复制代码
import java.util.Scanner;
import java.util.Stack;

/*
a{b{d,e{g,h{,I}}},c{f}}
 */
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String str=in.nextLine();
        Character[] arr=new Character[202];
        int index=0;
        Stack<Integer>stack=new Stack<>();
        for (int i = 0; i < str.length();i++) {
            if(str.charAt(i)=='{'){
                stack.push(index);
                if(str.charAt(i+1)==','){
                    index=index*2+2;
                }else{
                    index=index*2+1;
                }
            }else if(str.charAt(i)==','){
                if(str.charAt(i+1)!='}'&&str.charAt(i-1)!='{'){
                    index++;
                }
            }else if(str.charAt(i)=='}'){
                index=stack.peek();
                stack.pop();
            }else{
                arr[index]=str.charAt(i);
            }
        }
        ZX(arr,0);
    }
    private static void ZX(Character[] arr,int index){
        if(arr[index]==null)return;
        ZX(arr,index*2+1);
        System.out.print(arr[index]);
        ZX(arr,index*2+2);
    }
}
相关推荐
珂朵莉MM31 分钟前
2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组(国赛)解题报告 | 科学家
java·人工智能·python·算法·职场和发展·机器人
STY_fish_20123 小时前
手拆STL
java·c++·算法
小纭在努力3 小时前
【算法设计与分析】实验——改写二分搜索算法,众数问题(算法分析:主要算法思路),有重复元素的排列问题,整数因子分解问题(算法实现:过程,分析,小结)
数据结构·python·学习·算法·算法设计与分析·实验报告·实验
芜湖xin3 小时前
【题解-洛谷】B4278 [蓝桥杯青少年组国赛 2023] 简单算术题
算法·
理智的灰太狼4 小时前
题目 3298: 蓝桥杯2024年第十五届决赛真题-兔子集结
算法·职场和发展·蓝桥杯
kingmax542120087 小时前
【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
数据结构·c++·算法·广度优先
白熊1887 小时前
【机器学习基础】机器学习入门核心算法:XGBoost 和 LightGBM
人工智能·算法·机器学习
bai_lan_ya8 小时前
数据结构-排序-排序的七种算法(2)
数据结构·算法·排序算法
全域智图9 小时前
元胞自动机(Cellular Automata, CA)
人工智能·算法·机器学习
珂朵莉MM9 小时前
2022 RoboCom 世界机器人开发者大赛-本科组(省赛)解题报告 | 珂学家
人工智能·算法·职场和发展·深度优先·图论