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

基于非链式(数组)结点结构的二叉树的层序输入创建以及遍历

点击链接返回标题->基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出-CSDN博客


层序可谓是最简单的二叉树遍历了。。。。

代码很浅显易懂,相信你能明白的!

#include<iostream>
using namespace std;
typedef int datatype;
const int MAX = 8;
struct binTree {datatype tree[2 * MAX + 7];//该数组的最大容量必须超过最大结点数的两倍,用以存放空结点!int size;//当前有效结点个数
};void create_tree_seq(binTree* tree) {//按层序创建二叉树int x, i = 1;while (cin >> x) {//处理到无输入为止(返回-1,按Ctrl + z)//层序输入结点,并主观规定->输入-1代表该结点为空tree->tree[i++] = x;if (x != -1) tree->size++;}
}void travse_seq(binTree* tree) {//二叉树的层序遍历int len = tree->size, i = 1;while (len) {if (tree->tree[i] != -1) {//访问到的不是空结点就输出,并让len自减,len为0时所有有效结点均被输出printf("%d	", tree->tree[i++]);len--;}}
}

完整测试代码如下:

样例输入:

1 2 3 4 5 6 7 -1 -1 -1 -1 -1 -1 -1 -1

样例输出:

层序遍历结果——1       2       3       4       5       6       7
先序遍历结果——1       2       4       5       3       6       7
中序遍历结果——4       2       5       1       6       3       7
后序遍历结果——4       5       2       6       7       3       1

#include<iostream>
using namespace std;
typedef int datatype;
const int MAX = 8;
struct binTree {datatype tree[2 * MAX + 7];//该数组的最大容量必须超过最大结点数的两倍,用以存放空结点!int size;//当前有效结点个数
};void create_tree_seq(binTree* tree) {//按层序创建二叉树int x, i = 1;while (cin >> x) {//处理到无输入为止(返回-1,按Ctrl + z)//层序输入结点,并主观规定->输入-1代表该结点为空tree->tree[i++] = x;if (x != -1) tree->size++;}
}void travse_seq(binTree* tree) {//二叉树的层序遍历int len = tree->size, i = 1;while (len) {if (tree->tree[i] != -1) {//访问到的不是空结点就输出,并让len自减,len为0时所有有效结点均被输出printf("%d	", tree->tree[i++]);len--;}}
}
void travse_pre(binTree* tree, int i = 1) {//二叉树的先序遍历if (tree->tree[i] == -1) return;//访问到空结点,该递归路线需要返回//根,左,右printf("%d	", tree->tree[i]);travse_pre(tree, i * 2);travse_pre(tree, i * 2 + 1);
}
void travse_mid(binTree* tree, int i = 1) {//二叉树的中序遍历if (tree->tree[i] == -1) return;//左,根,右travse_mid(tree, i * 2);printf("%d	", tree->tree[i]);travse_mid(tree, i * 2 + 1);
}
void travse_nex(binTree* tree, int i = 1) {//二叉树的后序遍历if (tree->tree[i] == -1) return;//左,右,根travse_nex(tree, i * 2);travse_nex(tree, i * 2 + 1);printf("%d	", tree->tree[i]);
}
void test(binTree* tree) {create_tree_seq(tree);cout << "层序遍历结果——";travse_seq(tree);cout << endl;cout << "先序遍历结果——";travse_pre(tree);cout << endl;cout << "中序遍历结果——";travse_mid(tree);cout << endl;cout << "后序遍历结果——";travse_nex(tree);cout << endl;
}
int main() {binTree tree;tree.size = 0;memset(tree.tree, -1, sizeof(tree.tree));//初始化树的相关信息test(&tree);
}

相关文章:

基于非链式(数组)结点结构的二叉树的层序输入创建以及遍历

点击链接返回标题->基于非链式(数组)结点结构的二叉树的层序、先序、中序、后序输入创建以及层序、先序、中序、后序输出-CSDN博客 层序可谓是最简单的二叉树遍历了。。。。 代码很浅显易懂&#xff0c;相信你能明白的&#xff01; #include<iostream> using namesp…...

云计算:开辟数字时代的无限可能

云计算是一项革命性的技术&#xff0c;为企业和个人提供了灵活、可扩展和高效的计算资源。本文将介绍云计算的概念、架构和优势&#xff0c;并探讨其在数字化时代的重要性和未来发展趋势。 引言 随着信息技术的日新月异和数字化转型的浪潮席卷全球&#xff0c;云计算作为一种颠…...

Django+Vue项目创建 跑通

参考链接&#xff1a; 【精选】DjangoVue项目构建_django vue-CSDN博客 一、背景 主要介绍如何使用后端Django 前端Vue 的技术栈快速地搭建起一套web项目的框架。 为什么使用Django和Vue? Django是Python体系下最成熟的web框架之一&#xff0c;由于Python语言的易用…...

2023年中职“网络安全“—Linux系统渗透提权②

2023年中职"网络安全"—Linux系统渗透提权② Linux操作系统渗透测试任务环境说明&#xff1a;1. 使用渗透机对服务器信息收集&#xff0c;并将服务器中SSH服务端口号作为flag提交&#xff1b;2. 使用渗透机对服务器信息收集&#xff0c;并将服务器中主机名称作为flag…...

多模态大模型训练数据集汇总介绍

RefCOCO、RefCOCO、RefCOCOg 这三个是从MS-COCO中选取图像得到的数据集&#xff0c;数据集中对所有的 phrase 都有 bbox 的标注。 RefCOCO 共有19,994幅图像&#xff0c;包含142,209个引用表达式&#xff0c;包含50,000个对象实例。RefCOCO 共有19,992幅图像&#xff0c;包含1…...

IDEA中更换java项目JDK

我们打开IDEA 打开项目 然后选择 File 下的 Project Structure 这里 我们下拉选择自己需要的JDK Sources这里 也要设置一下JDK对应版本 然后 上面这个 Project 中 也要设置一下对应jdk的版本 保持一直 然后 我们打开 File 下的 Settings 然后 找到如下图配置 如果JKD版本看…...

C++函数

转载知呼大佬06 - C函数 - 知乎 (zhihu.com) 06 - C函数 本期我们讨论的是 C 中的函数。 函数到底是什么呢&#xff0c;函数就是我们写的代码块&#xff0c;被设计用来执行特定的任务&#xff0c;以后我们学习 class 类的时候&#xff0c;这些块会被称为方法&#xff0c;但是…...

设计模式-命令模式-笔记

“行为变化”模式 在组件的构建过程中&#xff0c;组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式组件的行为和组件本身进行解耦&#xff0c;从而支持组件行为的变化&#xff0c;实现两者之间的松耦合。 经典模式&#xff1a;Command、Visitor 动机&#xff0…...

酒店品牌纷纷冲击中高端,东呈集团能否“快人一步”?

过去两年酒店行业加速洗牌&#xff0c;“强者恒强”的马太效应正持续凸显。 报告显示&#xff0c;2022年排名前10名的酒店集团分别为锦江国际、华住、首旅如家、格林、东呈集团、尚美数智、亚朵、德胧、逸柏、都市酒店。以上10家酒店集团客房规模在连锁酒店市场占有率为62.36&…...

[hive] posexplode函数

在Hive SQL中&#xff0c;posexplode是一个用于将数组&#xff08;array&#xff09;拆分为多行的函数。 它返回数组中的每个元素以及其在数组中的位置&#xff08;索引&#xff09;作为两列输出。 这是posexplode函数的语法&#xff1a; posexplode(array)其中&#xff0c;…...

C#具名参数(Named Parameters)

在 C# 中&#xff0c;具名参数&#xff08;Named Parameters&#xff09;是一种在方法调用中使用参数名称来指定参数值的技术。通常情况下&#xff0c;我们使用位置参数&#xff08;Positional Parameters&#xff09;来按照方法参数的顺序传递参数值。但是&#xff0c;使用具名…...

Vue3的组件如何通讯

一、defineProps&#xff0c;defineEmits 子组件nameChange.vue <template><div class"title">姓&#xff1a;{{ firstName }}</div><div>名&#xff1a;{{ lastName }}</div>{{ name }}<button click"clickTap">传…...

MySQL SUBSTRING_INDEX 函数用法

定义和用法 SUBSTRING_INDEX()函数在指定数量的分隔符出现之前返回字符串的子字符串。 语法 SUBSTRING_INDEX(string, delimiter, number) 参数值 参数 描述 string 必须项。原始字符串 delimiter 必须项。要搜索的分隔符 number 必须项。搜索分隔符的次数。可以是正…...

腾讯微服务平台TSF学习笔记(一)--如何使用TSF的Sidecar过滤器实现mesh应用的故障注入

Mesh应用的故障注入 故障注入前世今生Envoy设置故障注入-延迟类型设置故障注入-延迟类型并带有自定义状态码总结 故障注入前世今生 故障注入是一种系统测试方法&#xff0c;通过引入故障来找到系统的bug&#xff0c;验证系统的稳健性。istio支持延迟故障注入和异常故障注入。 …...

day30_servlet

今日内容 零、复习昨日 一、接收请求 二、处理响应 三、综合案例 零、复习昨日 画图, 请求处理的完整流程(javaweb开发流程) 零、注解改造 WebServlet注解,相当于是在web.xml中配置的servlet映射 Servlet类 package com.qf.servlet;import javax.servlet.ServletException; im…...

计算机毕业设计 基于SpringBoot的社区物资交易互助平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

go 判断两棵树内容是否一致

goroutine http://127.0.0.1:3999/concurrency/8 question 使用 go 判断 两个 树 存放的 序列 是否 相同, 如果 相同 他们 被称为 equivalent_tree tree struct type Tree struct {Left *TreeValue intRight *Tree }由于 递归的 写法 比较简单, 此处 使用循环的 形式 来实…...

从Hugging Face上手动下载并加载预训练模型

0. 说明&#xff1a; 从 Hugging Face 上下手动载预训练的蛋白质语言模型&#xff08;以ProstT5为例&#xff09;&#xff0c;用模型中的 encoder 部分对蛋白质进行编码&#xff0c;得到 embedding features&#xff0c;用于下游的任务。 【ps. 除了手动下载之外&#xff0c;…...

Vue 前置 后置 路由守卫 独享 路由权限控制 自定义属性

import Vue from vue import VueRouter from vue-router //导入路由器 Vue.use(VueRouter)import Login from ../components/Login import User from ../components/User //导入需要路由的组件const router new VueRouter({//暴露出去使用routes:[{path: /login,component: Lo…...

upload-labs关卡11(双写后缀名绕过)通关思路

文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的…...

LLM代码生成安全框架:神经元级防护技术解析

1. 项目背景与核心价值去年在帮某金融客户做代码审计时&#xff0c;发现他们用大模型生成的SQL查询存在严重的注入漏洞。这件事让我意识到&#xff1a;当前LLM代码生成就像让新手司机直接上高速——虽然能跑起来&#xff0c;但安全隐患随时可能爆雷。GoodVibe正是为解决这个问题…...

Mamba-2状态空间模型的编译器优化与跨平台实现

1. Mamba-2状态空间模型的编译器优先实现状态空间模型&#xff08;State Space Models, SSMs&#xff09;近年来在序列建模领域展现出巨大潜力&#xff0c;但传统实现通常依赖特定硬件&#xff08;如NVIDIA GPU&#xff09;的定制内核。Mamba-2通过其状态空间对偶&#xff08;S…...

Qt Designer实战:5分钟做一个带关闭按钮的桌面小工具(附完整.ui文件)

Qt Designer极速入门&#xff1a;手把手打造带关闭按钮的桌面小工具 第一次接触Qt开发时&#xff0c;最让人兴奋的莫过于快速做出一个真正能运行的桌面程序。今天我们就用5分钟时间&#xff0c;从零开始完成一个带关闭按钮的窗口应用&#xff0c;让你体验Qt Designer可视化开发…...

抖音直播间数据采集的技术博弈:如何在隐私保护与数据需求之间找到平衡点

抖音直播间数据采集的技术博弈&#xff1a;如何在隐私保护与数据需求之间找到平衡点 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取&#xff08;2025最新版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 当…...

【ROS2实战笔记-15】ros2bag 的深度应用:从数据回放到系统级离线分析

对于 ROS 2 开发者而言&#xff0c;ros2bag 的价值远不止于记录和回放话题数据。它更像是一个时间旅行工具&#xff0c;将机器人在真实环境中的每一次传感器感知、每一次控制决策、每一次节点间的通信&#xff0c;都完整地凝固下来。这种能力使得它成为离线调试、性能分析和回归…...

Product Hunt 每日热榜 | 2026-05-08

1. FlowMarket 标语&#xff1a;一个由人工智能代理构成的社交网络&#xff0c;用于创造企业间的交易。 介绍&#xff1a;FlowMarket 是一个由人工智能代理组成的网络&#xff0c;能够自动发现、匹配和生成B2B交易。你只需几分钟就能创建自己的代理&#xff0c;并让它全天候运…...

【楼梯】装知网配式楼梯轻⁤量化优化设计【含Matlab源码 15422期】含同名参考文献

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…...

Arm Neoverse V2处理器勘误分类与规避方案详解

## 1. Neoverse V2处理器勘误深度解析作为Arm最新一代基础设施级处理器核心&#xff0c;Neoverse V2&#xff08;代号MP158&#xff09;在数据中心和边缘计算领域展现出强劲性能。但在实际部署中&#xff0c;硬件设计层面的勘误&#xff08;Errata&#xff09;可能引发系统性风…...

深入浅出 Java 反射机制,了解动态编程的原理,小白的速通指南

一、反射是什么&#xff1f;Reflection&#xff08;反射&#xff09; 是 Java 的一项强大特性&#xff0c;它允许运行中的程序获取自身或任意类的内部信息&#xff08;如成员变量、方法、构造器&#xff09;&#xff0c;并且可以动态创建对象、调用方法、修改字段&#xff0c;甚…...

如何找到Dev-C++中MinGW的安装路径

在Dev-C中找到MinGW的安装路径&#xff0c;可以通过以下步骤操作&#xff1a;方法一&#xff1a;通过Dev-C软件查看打开Dev-C软件点击顶部菜单栏的 工具(Tools) -> 编译器选项(Compiler Options)在 目录(Directories) 标签页下查看 编译器(Compiler) 或 MinGW编译器(MinGW C…...