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

牛客刷题 -- 二叉树遍历

题目示例

这道题的大致意思是:用户自己输入字符串,我们根据输入的字符串按照遍历方式(前/中/后序遍历)创建一棵二叉树,和根据二叉树创建数组相反,是不是感觉挺有意思?

思路分析

1.要根据用户输入的字符串创建数组,我得给用户一个输入的渠道吧

2.根据要求创建二叉树,要创建二叉树,要有结点空间吧,所以需要BuyNode方法去创建结点

3.假设利用先序遍历来构建二叉树,我该如何构建?

特别注意: 不要盲目的调用不返回创建的结点!!!

1.创建二叉树结点,判断arr[i] == '#'?不成立,存储到二叉树,继续遍历

2.中序遍历打印显示 

 代码实现

#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode
{char val;struct TreeNode* left;struct TreeNode* right;
}TreeNode;TreeNode* BuyNode(char x)
{TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));node->val = x;node->left = node->right = NULL;return node;
}TreeNode* createTree(char* arr, int* pi)
{if(arr[*pi] == '#'){(*pi)++;return NULL;}TreeNode* root = BuyNode(arr[*pi]);(*pi)++;root->left = createTree(arr, pi);root->right = createTree(arr, pi);return root;
}
void Inorder(TreeNode* root)
{if(root==NULL){return;}Inorder(root->left);printf("%c ",root->val);Inorder(root->right);
}int main() {char arr[100]={0};scanf("%s",arr);//创建二叉树int i=0;TreeNode* root = createTree(arr,&i);Inorder(root);return 0;
}
http://www.dtcms.com/a/294029.html

相关文章:

  • 百度大涨,AIGC视频生成模型蒸汽机将会给百度带来什么?
  • 【Windows命令手册】Windows中的常用命令,并与 Linux 做比较
  • BiLLM:突破大语言模型后训练量化的极限
  • Linux Debian操作系统、Deepin深度操作系统手动分区方案参考
  • 利用红黑树封装实现map,set
  • Keil MDK5 介绍与安装教程
  • Python Day22 - 复习日
  • 【bug】Jetson Orin NX apt更换国内源
  • #Linux权限管理:从“Permission denied“到系统安全大师
  • 如何使用 minio 完成OceanBase社区版的归档和备份
  • [Bug | Cursor] import error: No module named ‘data‘
  • SpringCloud sentinel服务熔断 服务降级
  • 一个没有手动加分号引发的bug
  • python---元组(Tuple)
  • C#简介(从入门到精通)
  • 判断矩形能否放入多边形内——cad c# 二次开发实现
  • 【服务器】 MCTP Over PCIe 的内容、用途、工作原理及硬件设计注意事项
  • 数据结构(2)顺序表算法题
  • C#使用socket报错 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。
  • .net平台的跨平台桌面应用开发的技术方案总结对比
  • 【黑马SpringCloud微服务开发与实战】(六)分布式事务
  • Matlab学习笔记:逻辑基础
  • PyTorch武侠演义 第一卷:初入江湖 第6章:驿站的秘密信鸽
  • Apache JMeter 使用记录踩坑
  • 前端模块化:CommonJS 与 ES Module
  • 性能测试-jmeter实战5
  • 4️⃣字典(dict)速查表
  • I2C控制器
  • 传统RNN模型笔记:输入数据长度变化的结构解析
  • 通用图片 OCR 到 Word API 数据接口