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

erchas

#include <iostream>
#include <vector>

https://gitee.com/tongchaowei/front-native-page-template/tree/main/image-display/template-01
using namespace std;

class BinaryTree {
private:
    vector<char> tree; // 存储二叉树的数组
    int size; // 二叉树的结点数

    // 计算索引i的左孩子和右孩子索引
    pair<int, int> getChildren(int i) {
        return {2 * i + 1, 2 * i + 2};
    }

    // 计算索引i的双亲索引
    int getParent(int i) {
        return (i - 1) / 2;
    }

public:
    BinaryTree() : size(0) {}

    // 插入结点
    void insert(char data) {
        tree.push_back(data);
        size++;
    }

    // 层序输出每个结点的双亲和孩子信息
    void printParentChild() {
        for (int i = 0; i < size; ++i) {
            char parent = getParent(i) >= 0 ? tree[getParent(i)] : '无';
            pair<int, int> children = getChildren(i);
            char leftChild = children.first < size ? tree[children.first] : '无';
            char rightChild = children.second < size ? tree[children.second] : '无';
            cout << tree[i] << "结点的双亲是" << parent << ",左孩子是" << leftChild << ",右孩子是" << rightChild << endl;
        }
    }

    // 前序遍历
    void preOrder(int index = 0) {
        if (index < size) {
            cout << tree[index] << " ";
            preOrder(getChildren(index).first);
            preOrder(getChildren(index).second);
        }
    }

    // 中序遍历
    void inOrder(int index = 0) {
        if (index < size) {
            inOrder(getChildren(index).first);
            cout << tree[index] << " ";
            inOrder(getChildren(index).second);
        }
    }

    // 后序遍历
    void postOrder(int index = 0) {
        if (index < size) {
            postOrder(getChildren(index).first);
            postOrder(getChildren(index).second);
            cout << tree[index] << " ";
        }
    }

    // 统计叶子结点数量,并输出每个叶子结点
    void countAndPrintLeaves() {
        int count = 0;
        for (int i = 0; i < size; ++i) {
            if (getChildren(i).first >= size && getChildren(i).second >= size) {
                cout << tree[i] << " ";
                count++;
            }
        }
        cout << endl << "叶子结点数量:" << count << endl;
    }
};

int main() {
    BinaryTree bt;
    // 假设输入的二叉树结点为:A B C D E F G H
    char nodes[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
    for (char node : nodes) {
        bt.insert(node);
    }

    cout << "层序输出每个结点的双亲和孩子信息:" << endl;
    bt.printParentChild();

    cout << "前序遍历:" << endl;
    bt.preOrder();
    cout << endl;

    cout << "中序遍历:" << endl;
    bt.inOrder();
    cout << endl;

    cout << "后序遍历:" << endl;
    bt.postOrder();
    cout << endl;

    cout << "统计叶子结点数量,并输出每个叶子结点:" << endl;
    bt.countAndPrintLeaves();

    return 0;
}

 

相关文章:

erchas

#include <iostream> #include <vector> https://gitee.com/tongchaowei/front-native-page-template/tree/main/image-display/template-01 using namespace std; class BinaryTree { private: vector<char> tree; // 存储二叉树的数组 int size;…...

【网络安全】SSL(一):为什么需要 Keyless SSL?

未经许可,不得转载。 文章目录 背景正文背景 随着网站和应用程序向云端迁移,使用 HTTPS(SSL/TLS)加密流量已成为行业标准。然而,传统的 HTTPS 配置要求服务器持有网站的私钥,这在云计算环境中引发了一系列安全性和合规性问题。一旦云服务器遭到攻击,私钥泄露可能带来不…...

ggplot2 分面图等添加注释文字,相加哪里加哪里: 自定义函数 AddText()

如果分面图上还想再添加文字&#xff0c;只能使用底层的grid包了。 函数定义 # Add text to ggplot2 figures # # param label text you want to put on figure # param x position x, left is 0, right 1 # param y position y, bottom is 0, up 1 # param color text color…...

解读缓存问题的技术旅程

目录 前言1. 问题的突发与初步猜测2. 缓存的“隐身术”3. 缓存策略的深层优化4. 反思与感悟结语 前言 那是一个普通的工作日&#xff0c;团队例行的早会刚刚结束&#xff0c;我正准备继续优化手头的模块时&#xff0c;突然收到了用户反馈。反馈的内容是部分数据显示异常&#…...

洛谷P1597

语句解析 - 洛谷 语句解析 题目背景 木有背景…… 题目描述 一串长度不超过255的 PASCAL 语言代码&#xff0c;只有 a,b,c 三个变量&#xff0c;而且只有赋值语句&#xff0c;赋值只能是一个一位的数字或一个变量&#xff0c;每条赋值语句的格式是 [变量]:[变量或一位整数…...

2411rust,76~79

1.76.0稳定版 此版本较小 ABI兼容更新 函数指针文档中新增的ABI兼容部分介绍了函数签名与ABI兼容的意义.大部分是参数类型和返回类型的兼容,及在当前Rust中兼容的列表.文档仅描述现有兼容的状态. 一个新增功能是,现在保证符和u32是ABI兼容的.它们一直有相同大小和对齐方式,…...

vue2.0前端管理系统界面布局设置

前言 后台管理系统的核心就是用户管理、角色管理&#xff08;含权限分配&#xff09;、菜单管理&#xff0c;以及一些业务管理。业务管理通常以及根据不同的角色进行了权限分配。本次任务完成用户管理页面。 一 界面设计 1.引用Element 的Container 布局容器。 以上次博客中…...

4. SQL视图

MySQL中的视图&#xff08;View&#xff09;是一种虚拟表&#xff0c;本质是存储了一条SELECT语句。视图并不直接存储数据&#xff0c;而是动态生成结果集&#xff0c;帮助开发者简化查询逻辑和增强数据安全性。本文将从视图的基础概念到实际应用&#xff0c;逐步深入地探讨如何…...

Simulink学习笔记【PID UG联动仿真】

Simulink进行PID控制及调参&#xff1a; 建立系统动力学框图&#xff08;把状态方程翻译出来&#xff09;&#xff0c;设置成subsystem建立PID反馈回路。示波器叫scope&#xff0c;多变量输出用demux和mux。可以用自动调参Tune模块&#xff0c;调整响应速度和稳定性&#xff0…...

【Python】30个Python爬虫的实战项目!!!(附源码)

Python爬虫是数据采集自动化的利器。本文精选了30个实用的Python爬虫项目&#xff0c;从基础到进阶&#xff0c;每个项目都配有完整源码和详细讲解。通过这些项目的实战&#xff0c;可以全面掌握网页数据抓取、反爬处理、并发下载等核心技能。 一、环境准备 在开始爬虫项目前…...

uni-app 界面TabBar中间大图标设置的两种方法

一、前言 最近写基于uni-app 写app项目的时候&#xff0c;底部导航栏 中间有一个固定的大图标&#xff0c;并且没有激活状态。这里记录下实现方案。效果如下&#xff08;党组织这个图标&#xff09;&#xff1a; 方法一&#xff1a;midButton的使用 官方文档&#xff1a;ta…...

什么是Sass,有什么特点

Sass 概述 什么是 Sass&#xff1f; Sass&#xff08;Syntactically Awesome Style Sheets&#xff09;是一种 CSS 预处理器&#xff0c;它扩展了 CSS 的功能&#xff0c;使其更加强大和灵活。Sass 允许开发者使用变量、嵌套规则、混合宏、继承等高级特性&#xff0c;从而编写…...

服务器端渲染 (SSR) 与客户端渲染 (CSR)

嘿程序员&#xff01;我们都知道&#xff0c;新时代的 Javascript 已经彻底改变了现代网站的结构和用户体验。如今&#xff0c;网站的构建更像是一个应用程序&#xff0c;伪装成一个能够发送电子邮件、通知、聊天、购物、支付等的网站。今天的网站是如此先进、互动&#xff0c;…...

数据结构(Java版)第一期:时间复杂度和空间复杂度

目录 一、数据结构的概念 1.1. 什么是数据结构 1.2. 算法与数据结构的关系 二、算法效率 三、时间复杂度 3.1. 大O的渐进表⽰法 3.2. 计算冒泡排序的时间复杂度 3.3. 计算二分查找的时间复杂度 四、空间复杂度 4.1. 空间复杂度 4.2. 冒泡排序的空间复杂度 4.3.…...

基于web的音乐网站(Java+SpringBoot+Mysql)

目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1 MYSQL数据库 2.2 B/S结构 2.3 Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性能分析 3.2.1 系统安全性 3.2.2 数据完整性 …...

用go语言后端开发速查

文章目录 一、发送请求和接收请求示例1.1 发送请求1.2 接收请求 二、发送form-data格式的数据示例 用go语言发送请求和接收请求的快速参考 一、发送请求和接收请求示例 1.1 发送请求 package mainimport ("bytes""encoding/json""fmt""ne…...

GeekChallenge 2024 第十五届极客大挑战 pwn AK

GeekChallenge 2024 第十五届极客大挑战 pwn AK &#x1f340;前言☘️ez_shellcode&#xff08;shellcode&#xff0c;栈溢出&#xff09;&#x1f33f;分析&#x1f33f;解题&#x1f33f;exp ☘️买黑吗喽了吗&#xff08;整数溢出&#xff0c;栈溢出&#xff09;&#x1f3…...

禅道是什么,nas是什么,ssh是什么,finalshell是什么,git命令feat 、fix分别什么意思

禅道&#xff08;Zentao&#xff09;是一款开源的项目管理软件&#xff0c;专为软件开发团队设计。它集成了项目管理、产品管理、质量管理、文档管理和事务管理等多种功能&#xff0c;旨在帮助团队提高工作效率和项目交付质量。禅道支持敏捷开发方法&#xff0c;同时也适用于传…...

点云-半径搜索法-Radius Search

核心作用 在于通过设定一个空间范围&#xff08;半径&#xff09;寻找点的邻域点集合&#xff0c;从而支持对局部区域的分析和操作。 因为空间半径不会随着密度变化而改变点云输出的结果&#xff0c;处理密度变化大的点云时很重要。 应用场景 稀疏点检测&#xff1a;当点云密度…...

P11290 【MX-S6-T2】「KDOI-11」飞船

题目大意&#xff1a;有i种加油站&#xff0c;最开始速度为1&#xff0c;每次加油可以使速度*v&#xff0c;每次加油有一个时间代价&#xff0c;求到达终点所需最小时间。 思路&#xff1a;不妨考虑dp&#xff0c;贪心是错误的。 对于速度而言&#xff0c;&#xff0c;所以速…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...