【华为上机真题 2022】完全二叉树非叶子节点后序遍历

news2024/12/24 10:58:11

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、题目描述

1.1 输入描述

1.2 输出描述

1.3 测试样例

1.3.1 示例 1

二、解题思路

三、代码实现

四、时间复杂度


一、题目描述

给定一个以顺序存储结构(按每一层从左到右顺序)存储整数值的完全二叉树序列(最多 1000 个整数),请找出此完全二叉树的所有非叶子节点部分,然后采用后序遍历的方式将该树的非叶子节点输出。

只有一个节点的树,此节点是根节点,应该被认为是非叶子节点。

此完全二叉树并非满二叉树,可能存在倒数第二层出现叶子节点,或者无右叶子的情况。

后序遍历的顺序:左-右-根。

1.1 输入描述

一个通过空格分隔的整数序列字符串。

1.2 输出描述

非叶子部分树结构的后序遍历结果。

1.3 测试样例

1.3.1 示例 1

输入

1 2 3 4 5 6 7

输出

2 3 1

说明:找到非叶子部分树结构,然后采用后序遍历输出。

备注:输出数字以空格分隔。

二、解题思路

本题主要考查后序遍历,首先需要对输入的字符串进行解析,因为题目要求仅仅输出非叶子节点的后序遍历结果,所以只需要对非叶子节点进行后序遍历即可。

假设有完全二叉树有 n 个节点,那么,非叶子节点个数为 m = n / 2。

三、代码实现

代码实现如下所示。

#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string>g;

// 后续遍历
void postOrder(int x, int n, bool &flag) {
    if (x * 2  + 1 < n) {
        postOrder(x * 2 + 1, n, flag);
    }
    if (x * 2 + 2 < n) {
        postOrder(x * 2 + 2, n, flag);
    }
    if (flag) cout<<" ";
    cout<<g[x];
    flag = true;
}

int main()
{
    string str;
    while (getline(cin, str)) {

        // 解析输入
        stringstream stream(str);
        while (getline(stream, str, ' ')) {
            g.push_back(str);
        }

        int n = g.size()/2;
        bool flag = false;
        postOrder(0, n, flag);
        cout<<endl;

    }
    return 0;
}

四、时间复杂度

时间复杂度:O(n)

其中,n 表示完全二叉树节点个数,在上述代码中,首先通过 while 解析出 n  个节点,然后通过后序遍历输出非叶子节点,所以时间复杂度为 O(n)。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不知道哪个视频软件可以一键成片?建议收藏这些软件

随着短视频平台的不断发展&#xff0c;越来越多的小伙伴加入进了短视频剪辑的行列当中。现在市面上的视频剪辑软件很多&#xff0c;但是对于新手小白来说&#xff0c;能够快速上手使用的视频编辑软件才是重要的。那你们知道一键成片视频软件哪个好吗&#xff1f;有想要制作短视…

2、基于XML的依赖注入详细配置

一、依赖注入详细配置 1、通过P名称空间为Bean注入值 1、简化setter方式注入的配置&#xff0c;可以不使用<property />子标签来为属性设置值&#xff0c;直接在<bean />标签中设置各依赖项的值。 2、注入值类型说明&#xff1a; 对于String、基本类型及其包装类使…

visio绘图小技巧

1.如何在图框的任意位置添加点&#xff1f; 先选中x点指令&#xff0c;再按住ctrl键&#xff0c;即可在任意位置画点 2.如何画出锯齿形线段&#xff1f; visio里面好像没有现成的锯齿形线段&#xff0c;所以可以利用直线反复折画&#xff0c;但是这里有个小技巧&#xff0c;就…

[附源码]JAVA毕业设计小王防疫副食品配送商城(系统+LW)

[附源码]JAVA毕业设计小王防疫副食品配送商城&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

获取网易云音乐开放接口api的推荐歌单

网易云音乐开放api接口 网址&#xff1a;https://binaryify.github.io/NeteaseCloudMusicApi/#/?idneteasecloudmusicapi 项目地址&#xff1a;https://github.com/Binaryify/NeteaseCloudMusicApi 下载下来之后&#xff0c;安装依赖&#xff1a;npm install 启动服务&#xf…

决策树(decision tree)

决策树构建&#xff1a;特征选择、决策树的生成和决策树的修剪。 特征选择 特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率&#xff0c;如果利用一个特征进行分类的结果与随机分类的结果没有很大差别&#xff0c;则称这个特征是没有分类能力的…

Lifeform——站在3D虚拟数字身份与元宇宙结合的风口之上

Web3和元宇宙是公认的下一个风口&#xff0c;吸引了大量用户的关注和参与。从《我的世界》中的场景编辑器&#xff0c;到DecentreLand&#xff0c;以及Sandbox中玩家对自己虚拟地块的装饰。人们在虚拟世界中举办各种活动&#xff0c;比如演唱会、节日庆祝或者比赛、游戏甚至婚礼…

PrizmDoc Viewer添加了新的Excel渲染选项

PrizmDoc Viewer添加了新的Excel渲染选项 添加了新的Microsoft Excel渲染选项。PrizmDoc Viewer现在提供了在MSO渲染模式下查看Excel文档时自动调整单元格宽度和/或高度的选项。 PrizmDoc Viewer Microsoft Office转换附加选项现在与运行在Microsoft Windows Server 2019/2022上…

谷粒商城8:分布式锁使用和springcache的整合

1.分布式锁redisson使用 ①分布式锁简介 ②分布式锁学习过程 ③最终分析 加入锁为原子操作&#xff1a;设置过期时间设置锁 删除锁为原子操作&#xff1a;业务流程删除锁 将锁的过期时间调长 ④Redisson的使用 引入依赖程序化配置使用 创建redisson客户端 Redisson.create(…

6.论文学习Modality-aware Mutual Learning for Multi-modal Medical Image Segmentation

目录一.摘要1.背景解决方法1.如何有效整合来自多模态医学图像的信息2.如何处理常见模式缺失的情况2.解决1.ML2.MA3.结论二.方法2.1模态特定模型Modality-specific Model2.2 Modality-Aware Module2.3互学策略Mutual Learning Strategy三.实验与结果3.1数据集和评估指标3.2运行细…

杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】

1. 什么是 Spring Boot&#xff1f; Spring Boot 是 Spring 开源组织下的子项目&#xff0c;是 Spring 组件一站式解决方案&#xff0c;主要是简化了使用Spring 的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;使开发者能快速上手。 2. 为什么要用…

c#入门-别名引用

别名引用 如果你引用的命名空间中出现了同名的类&#xff0c;那么会无法判断你使用的类型。 当然&#xff0c;你可以使用完全限定名。 或者&#xff0c;你可以为其中一个类型指代别名。 使用引用命名空间语句&#xff0c;为一个标识符赋值一个类型。 可以使用这个标识符代替…

基于java+springmvc+mybatis+jsp+mysql的通信簿管理系统

项目介绍 前端页面&#xff1a; 功能&#xff1a;首页、日志信息、心情日志、相册信息、个人中心、后台管理 管理员后台页面&#xff1a; 功能&#xff1a;主页、个人中心、用户管理、日志信息管理、日志类别管理、心情日志管理、相册信息管理、系统管理 开发环境 开发语言&…

C#【必备技能篇】Marshal是什么?怎么用?

文章目录学习来源&#xff1a;MSDN官方文档一、Marshal是什么&#xff1f;1、英文释义&#xff1a;2、在MSDN中的定义&#xff1a;3、通俗理解&#xff1a;二、Marshal怎么用&#xff1f;【主要以一些实例来了解】1、Marshal下的方法_部分截图【C#源码】&#xff1a;2、一些示例…

自定义RBAC(3)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; RBAC类型的权限&#xff0c;本质上是一种对资源访问路径的控制&#xff0c;且具有典型的树型层次结构。而树型结构&#xff0c;天然地就有父结点和子结点的关系以…

【HarmonyOS】ArkTS Native开发——使用 system函数创建文件

ArkTS是HamronyOS优选的主力语言&#xff0c;但官方文档指南中对于Native应用开发并没有详细的描述&#xff0c;只有一篇Codelab可以学习&#xff08;简易Native C 示例&#xff08;ArkTS&#xff09; (huawei.com)&#xff09;&#xff0c;本文将在Native应用中使用C/C的syste…

计算机毕业设计ssm+vue基本微信小程序的早茶预定系统 uniapp 小程序

项目介绍 本文介绍了使用微信小程序技术开发早茶预定系统的设计与实现过程,首先对实现该系统的技术进行分析,说明选择Java后台技术和MySQL数据库的必要性,然后对基于微信小程序的早茶预定系统的需求进行分析。并接着对系统进行设计,包括架构设计、功能设计、数据库设计。最后进…

关于商业智能 BI 认知上的误区,你有几个

关于商业智能BI的介绍&#xff0c;网络上有太多的杂音&#xff0c;总而言之会把商业智能BI讲解的貌似很简单&#xff0c;感觉上买了一个工具就可以解决所有的问题&#xff0c;这其实是一个非常大的误区。 商业智能BI - 派可数据商业智能BI可视化分析平台 我这里总结了一下&…

宠物店微信小程序开发步骤_宠物店管理系统用什么做

大多数人对于动物医疗专业知识比较匮乏&#xff0c;再加上宠物医疗费用&#xff0c;日常用品都略高&#xff0c;宠物店/宠物医院的前景&#xff0c;再未来依旧可观。 相比于实体店&#xff0c;线上平台无疑有着更广阔的拓客渠道和销售前景&#xff0c;做宠物店/宠物医院小程序…

如何高效制作数据可视化大屏,大屏高效制作攻略分享,总有一款适合你

做数据可视化大屏可不是一件简单的事情&#xff0c;里面有很多技巧&#xff0c;像布局&#xff0c;配色&#xff0c;图表和素材的选用和搭配等等&#xff0c;里面有很多学问。一时半会也做不出一个大屏&#xff0c;即使你会做也需要一定的时间和精力&#xff0c;在大量的需求下…