当前位置: 首页 > news >正文

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

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

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

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

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

代码

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);}
}

相关文章:

  • 5.2算法学习笔记(动态规划)
  • 文章七《深度学习调优与超参数优化》
  • 【东枫科技】AMD / Xilinx Alveo™ V80计算加速器卡
  • pip 常用命令及配置
  • SQL语句练习 自学SQL网 在查询中使用表达式 统计
  • 紫荆阁电玩平台环境搭建与系统运行实录(蒙特卡洛系列)
  • 从实列中学习linux shell9 如何确认 服务器反应迟钝是因为cpu还是 硬盘io 到底是那个程序引起的。cpu负载多高算高
  • python如何在深度学习框架目标检测算法使用Yolov8训练道路汽车漆面车漆缺陷数据集 建立基于YOLOv8道路汽车漆面缺陷(划痕)检测系统
  • Linux中的权限
  • spring-ai集成langfuse
  • 【愚公系列】《Manus极简入门》013-电影推荐专家:“银幕导航家”
  • MQTT 协议与 HTTP 协议的区别
  • 西电雨课堂《知识产权法》课后作业答案
  • C语音中的三元运算符
  • 深度解析 Let‘s Encrypt 证书申请:从核心概念到实战避坑指南
  • 字符和编码(python)
  • Trae 安装第三方插件支持本地部署的大语言模型
  • (11)Vue-Router路由的详细使用
  • 银河麒麟操作系统QT程序打包,使用 linuxdeployqt 自动打包
  • 友元函数和友元类
  • 融创中国清盘聆讯延至8月25日,清盘呈请要求遭到部分债权人反对
  • 日产淡水10万吨、全自动运行,万华化学蓬莱海水淡化厂投产
  • 《水饺皇后》:命运如刀,她以饺子还击
  • 格桑花盛放上海,萨迦艺术团襄阳公园跳起藏族舞
  • 马上评|科学谋划“十五五”,坚定不移办好自己的事
  • 美乌矿产协议预计最早于今日签署