首页 > 其他分享 >PTA——数和二叉树

PTA——数和二叉树

时间:2024-05-29 21:55:39浏览次数:29  
标签:TreeNode val nullptr PTA 二叉树 root 节点

7-10 建立与遍历二叉树

以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’, 表示该二叉树是空树,否则该字符是相应结点的数据元素。读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉树并输出结点数据。

输入格式:

字符串形式的先序序列(即结点的数据类型为单个字符)

输出格式:

中序遍历结果

输入样例:

在这里给出一组输入。例如:

ABC##DE#G##F###

输出样例:

在这里给出相应的输出。例如:

CBEGDFA
#include<iostream>
#include<string>
using namespace std;
const int N = 10001001;
//结构体的定义
struct TreeNode {
    char data;
    TreeNode* left, * right;
    TreeNode(char val) :data(val), left(nullptr), right(nullptr) {}//初始化
};
//数的建立
TreeNode* BuildTree(const string& T, int& i) {
    if (i >= T.length()) {
        return nullptr;
    }
    char val = T[i++];
    if (val == '#') {
        return nullptr;
    }
    TreeNode* root = new TreeNode(val);
    root->left = BuildTree(T, i);
    root->right = BuildTree(T, i);
    return root;
}
//中序遍历
void inorderTraversal(TreeNode* root) {
    if (root == nullptr) return;
    inorderTraversal(root->left);
    cout << root->data ;
    inorderTraversal(root->right);
}
int main() {
    string T;
    cin >> T;
    int i = 0;
    TreeNode* root = BuildTree(T, i);
    inorderTraversal(root);
    return 0;
}



/*TreeNode(char val) : data(val), left(nullptr), right(nullptr) {}是C++中的构造函数的定义。这段代码表示了TreeNode结构体的构造函数,用于初始化TreeNode对象的数据成员。

具体来说:

char val是构造函数的参数,表示要传入的节点数据值。
data(val)表示将构造函数参数val赋值给TreeNode对象的data成员,即节点的数据值。
left(nullptr)表示将左子节点初始化为nullptr,表示刚创建的节点暂时没有左子节点。
right(nullptr)表示将右子节点初始化为nullptr,表示刚创建的节点暂时没有右子节点。*/

 

标签:TreeNode,val,nullptr,PTA,二叉树,root,节点
From: https://www.cnblogs.com/sly-345/p/18221174

相关文章

  • HarmonyOS实战开发:@ohos.promptAction (弹窗)
    创建并显示文本提示框、对话框和操作菜单。说明:本模块首批接口从APIversion9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。该模块不支持在UIAbility的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建组件实例后使用。本模块功能依赖UI的......
  • (二刷)代码随想录第17天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之
    110.平衡二叉树math.abs指的是绝对值;这棵树的左右子树的高度差小于1的时候,同时该树的左右子树都是平衡二叉树的时候,这棵树才是平衡二叉树;classSolution{publicbooleanisBalanced(TreeNoderoot){returngetHeight(root)!=-1;}privateint......
  • linux安全技术与iptables防火墙
    一、安全技术入侵检测系统:特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类似于监控系统一般采用旁路部署方式。入侵防御系统:以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马......
  • 数据结构与算法学习——二叉树
    题目PS:下列题目均来自leetcode中灵神题单938.二叉搜索树的范围和classSolution:defrangeSumBST(self,root:TreeNode,low:int,high:int)->int:ifnotroot:return0ifroot.val>high:returnself.rangeSumBST(r......
  • 代码随想录算法训练Day20|LeetCode654-最大二叉树、LeetCode617-合并二叉树、LeetCode
    最大二叉树题目描述力扣654-最大二叉树给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。......
  • 二叉树——堆详解
    目录前言:一、堆的结构二、向上调整和向下调整    2.1向上调整    2.2向下调整    2.3向上调整和向下调整时间复杂度比较三、堆的实现    3.1堆的初始化    3.2堆的销毁    3.3堆的插入       ......
  • 基于C++的二叉树的创建与遍历(免费提供源码)
    下载地址如下:上传明细-CSDN创作中心项目介绍背景二叉树作为一种常见的数据结构,在计算机科学和编程实践中占有重要地位。它广泛应用于搜索算法、排序算法、表达式解析、符号表以及各种数据库索引结构中。因此,掌握二叉树的创建和遍历是计算机科学领域的一项基本技能。本项目......
  • 代码随想录算法训练营第第20天 | 654.最大二叉树 、617.合并二叉树 、700.二叉搜索
    654.最大二叉树又是构造二叉树,昨天大家刚刚做完中序后序确定二叉树,今天做这个应该会容易一些,先看视频,好好体会一下为什么构造二叉树都是前序遍历题目链接/文章讲解:https://programmercarl.com/0654.最大二叉树.html视频讲解:https://www.bilibili.com/video/BV1MG411G7ox......
  • 二叉树的基本操作
    一、什么是二叉树:二叉树的介绍在上上章《数据结构-----堆的实现与操作》中有讲到,不知道的可以去那里看看二、二叉树的基本结构typedefintBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata;//当前节点值域 structBinaryTreeNode*left;//指向当前节......
  • TCP_UNACCEPTABLE_14: [close-wait] out-of-wdw SEQ | unacceptable ACK -> ACK (seq,
    测试目的:验证TCP在CLOSE-WAIT状态下,接收到一个窗口外的序列号或不可接受的ACK号的段时,是否能够返回一个带有正确的序列号和ACK号的ACK段,并保持在相同的状态。描述:在TCP连接的CLOSE-WAIT状态下,如果接收到一个序列号超出当前窗口或ACK号不可接受的段,TCP必须回应一个空的ACK......