【遍历二叉树的非递归算法,二叉树的层次遍历】
文章目录
- 遍历二叉树的非递归算法
- 二叉树的层次遍历
遍历二叉树的非递归算法
先序遍历序列建立二叉树的二叉链表
中序遍历非递归算法
二叉树中序遍历的非递归算法的关键:在中序遍历过某个结点的整个左子树后,如何找到该结点的根以及右子树。
基本思想:
(1)建立一个栈
(2)根结点进栈,遍历左子树
(3)根结点出栈,输出根结点,遍历右子树。
二叉树的层次遍历
对于一棵二叉树来说,从根结点开始从左到右,从上到下。
每个结点只访问一次。

算法设计思路:
1.按节点进队;
2.队不空时循环:从队列中出列一个结点*p,访问它:①若他有左孩子结点,将左孩子结点进队。②若它有右孩子,将右孩子先进队。
#include<iostream>
using namespace std;
#define TElemType inttypedef struct BiNode {TElemType data;struct BiNode* lchild, * rchild;//左右孩子指针
}BiNode,*BiTree;//菜单
void menu() {cout << "1.初始化" << endl;cout << "2.创建树" << endl;cout << "3.复制树" << endl;
}//初始化
void initList(BiTree T) {T = new BiNode;if (!T) {exit(0);//开辟空间失败}else {T->data = 0;}
}//创建树
BiTree createLink(){BiTree T;int data;cout << "请输入data的值:" << endl;cin >> data;if (data == -1) {//说明他的下子树不再存东西return NULL;}else {T = new BiNode;T->data = data;cout << "请输入左子树的值:" << endl;cin >> data;T->lchild = createLink();cout << "请输入右子树的值:" << endl;cin >> data;T->rchild = createLink();return T;}
}//复制二叉树
int Copy(BiTree T, BiTree& NewT) {if (T == NULL) {NewT = NULL;return 0;}else {NewT = new BiNode;NewT->data = T->data;Copy(T->lchild, NewT->lchild);Copy(T->rchild, NewT->rchild);}
}//int PreOderTraverse(BiTree T) {
// if (T == NULL) {
// return 1;
// }
// else {
// cout << "输出T的头结点的值:" << T->data;
// PreOderTraverse(T->lchild);//递归调用左子树
// PreOderTraverse(T->rchild);//递归调用右子树
// }
//}int main() {int choose = 1;BiTree T;T = new BiNode;while (true) {menu();cout << "请输入您选择的功能:" << endl;cin >> choose;switch (choose){case 1:initList(T);cout << "初始化成功!" << endl;break;case 2:createLink();cout << "创建成功!" << endl;break;default:break;}}return 0;
}
相关文章:
【遍历二叉树的非递归算法,二叉树的层次遍历】
文章目录 遍历二叉树的非递归算法二叉树的层次遍历 遍历二叉树的非递归算法 先序遍历序列建立二叉树的二叉链表 中序遍历非递归算法 二叉树中序遍历的非递归算法的关键:在中序遍历过某个结点的整个左子树后,如何找到该结点的根以及右子树。 基本思想&a…...
数模之线性规划
线性规划 优化类问题:有限的资源,最大的收益 例子: 华强去水果摊找茬,水果摊上共3个瓜,华强总共有40点体力值,每劈一个瓜能带来40点挑衅值,每挑一个瓜问“你这瓜保熟吗”能带来30点挑衅值,劈瓜消耗20点体力值,问话消耗…...
【C++】AVL树的4中旋转调整
文章目录 前提一、AVL树的结构定义二、AVL的插入(重点)1. 插入的结点在较高左子树的左侧(右单旋)2. 新节点插入较高右子树的右侧(左单旋)3.新结点插入较高右子树的左侧(先右单旋再左单旋&#x…...
【MATLAB源码-第69期】基于matlab的LDPC码,turbo码,卷积码误码率对比,码率均为1/3,BPSK调制。
操作环境: MATLAB 2022a 1、算法描述 本文章介绍了卷积码、Turbo码和LDPC码。以相同的码率仿真这三种编码,并对比其误码率性能 信源输出的数据符号(二进制)是相互独立和等概率的; 信道是加性白高斯噪声信道&#…...
Java获取时间戳、字符串和Date对象的相互转换、日期时间格式化、获取年月日
获取时间戳(自1970年1月1日经历的毫秒数值) package org.example;import java.util.Date;public class Main {public static void main(String[] args) {Date date1 new Date(1699540662210L);System.out.println(date1.getTime());Date date2 new Dat…...
用c语言实现矩阵转置
下面是在 C 语言中实现矩阵转置的示例代码: #include <stdio.h> #define ROWS 3 #define COLS 3 void transpose(int matrix[ROWS][COLS]) { int temp; for(int i0; i<ROWS; i) { for(int j0; j<i; j) { temp matrix[i][j]; matrix[i][j] matrix[j]…...
蓝桥杯官网练习题(移动距离)
题目描述 X 星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为 1,2,3, 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为 6 时,开始情形如下: 1 2 3 4 5 6 12 …...
不止于“初见成效”,阿斯利康要让数据流转,以 AI 带动决策智能
“阿斯利康数字化成果在进博会上引人注目,令我感到非常高兴。”这是阿斯利康代表的感慨。 数字化建设目标是利用先进技术来提高企业运营效率,降低成本。在第六届进博会的7.2 B2-01展区,阿斯利康不仅展示了全球领先的生物医药和医疗器械成果&a…...
nav2 调节纯追踪算法
纯追踪算法 纯追踪基础 The core idea is to find a point on the path in front of the robot and find the linear and angular velocity to help drive towards it. 核心思想是在机器人前方的路径上找到一个点,并找到一个合适的线速度和角速度,以驱…...
安装RabbitMQ
安装RabbitMQ 下载需要的两个包 # 这直接就可以安装了,下面 ‘上传对应的rmp包’ 操作 [rootrabbitmq-1 ~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash [rootrabbitmq-1 ~]# yum install erlang-21.3.8.2…...
Spring基础(1):两个概念
最近看了点Spring的源码,于是来稍微扯一扯,希望能帮一部分培训班出身的朋友撕开一道口子,透透气。 广义上的Spring指的是Spring整个项目,包含SpringBoot、SpringCloud、SpringFramework、SpringData等等, 本系列文章…...
国产化精密划片机已得到国内更多厂家青睐
国产化精密划片机在近年来得到了国内许多厂家的青睐,这是因为精密划片机在工业生产中有着重要作用。这种设备主要用于高精密切割加工,适用于多种材料,包括硅、石英、氧化铝、氧化铁等。 以精密晶圆划片机为例,这种设备采用了自主研…...
Voice Control for ChatGPT简单高效的与ChatGPT进行交流学习。
快捷又不失灵活性 日常生活中,我们与亲人朋友沟通交流一般都是喜欢语音的形式来完成的,毕竟相对于文字来说语音就不会显的那么的苍白无力,同时最大的好处就是能解放我们的双手吧,能更快实现两者间的对话,沟通便更高效…...
flutter生态一统甜夏 @Android @ios @windowse @macos @linux @Web
(愿景)G o o g l e 中 国flutter生态一统天下(IT) Web Android ios Windowse Macos Linux Google中国https://space.bilibili.com/64169458 https://pub-web.flutter-io.cn 构建 Flutter Web 应用 构建 Flutter Web 应用 - Flutter 中文文档 - Flutter 中文开发者网站 …...
计算机基础知识49
三板斧的使用(views.py) 三个方法:HttpResponse: 返回的是字符串render : 返回html文件redirect : 返回加载HTML页面的 def html(request):print(from html)# return HttpResponse(request) # 它返回的是字符串return render(request,html.html) # 返回html# ret…...
el-table给某一行加背景色
数据列表中总价大于100的一行背景色为红色,效果图如下: 代码示例: <template><div id"app"><!-- 测试区域!!!!!!!!&am…...
搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板
STM32F407-GCC-Template Arm-none-eabi-gcc MakefileOpenOCDCMSIS-DAPVscode工程模板 一、本次环境搭建所用的软硬件 1)Windows or Linux (本文以Windows为主) 2)JLink、Daplink、Wch-Link烧录器 3)GNU Arm Embedded Toolchain交叉编译…...
Unity场景ab包加载压缩(LZ4,LZMA)格式的测试
情况 最近场景越来越大,大概800M的场景加载时间可能长达40秒左右,所以需要测试看看发生了什么。 测试环境 测试环境Win10,21thI5-12600KF,32GRam , Nvidia GF RTX2060 32G Scene1大小:741M 加载代码 首…...
私有化部署大模型:5个.Net开源项目
从零构建.Net前后端分离项目 今天一起盘点下,10月份推荐的5个.Net开源项目(点击标题查看详情)。 1、BootstrapBlazor企业级组件库:前端开发的革新之路 BootstrapBlazor是一个用于构建现代Web应用程序的开源框架,它基…...
安卓系统手机便签app使用哪一款?
在现代快节奏的生活中,我们经常会遇到各种繁忙的事务和容易遗忘的备忘事项。为避免大家遗忘重要的事情,大家可以在常用的手机上安装记录备忘事项的工具,为了帮助安卓用户高效地记录和管理这些信息,今天我将向大家推荐一款功能强大…...
3分钟搞定OFD转PDF:开源神器Ofd2Pdf的极简使用指南
3分钟搞定OFD转PDF:开源神器Ofd2Pdf的极简使用指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 你是否曾收到一份OFD格式的电子发票,却发现在手机、平板或同事的电脑上无法…...
群晖DSM 7.2.2视频管理危机:一键修复方案深度解析
群晖DSM 7.2.2视频管理危机:一键修复方案深度解析 【免费下载链接】Video_Station_for_DSM_722 Script to install Video Station in DSM 7.2.2 and DSM 7.3 项目地址: https://gitcode.com/gh_mirrors/vi/Video_Station_for_DSM_722 当您将群晖NAS升级到DSM…...
Adobe-GenP 3.0终极指南:免费解锁Adobe全家桶的完整教程
Adobe-GenP 3.0终极指南:免费解锁Adobe全家桶的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud高昂的订阅费用发愁…...
WarcraftHelper终极指南:5分钟让你的魔兽争霸3焕然一新
WarcraftHelper终极指南:5分钟让你的魔兽争霸3焕然一新 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争霸…...
如何用4个技术突破重新定义数字艺术创作流程?
如何用4个技术突破重新定义数字艺术创作流程? 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/gh_…...
BitNet-b1.58-2B-4T-GGUF效果展示:多轮对话中角色一致性与记忆能力测试
BitNet-b1.58-2B-4T-GGUF效果展示:多轮对话中角色一致性与记忆能力测试 1. 模型特性概览 BitNet-b1.58-2B-4T-GGUF是一款突破性的开源大语言模型,采用原生1.58-bit量化技术,在保持高性能的同时实现了极致的效率优化。这款模型最引人注目的特…...
Qwen3.5-9B-GGUF保姆级教程:Supervisor日志路径配置与错误定位技巧
Qwen3.5-9B-GGUF保姆级教程:Supervisor日志路径配置与错误定位技巧 1. 项目概述 Qwen3.5-9B-GGUF是基于阿里云通义千问3.5开源模型(2026年3月发布)的量化版本,采用GGUF格式进行优化。这个90亿参数的稠密模型采用了创新的Gated D…...
使用 Rsync 实现服务器数据同步
在当今数据驱动的时代,服务器数据同步是保障业务连续性和数据安全的关键任务。Rsync作为一款高效、灵活的文件同步工具,凭借其增量传输和低资源消耗的特性,成为运维人员的首选方案。无论是跨服务器备份、负载均衡还是灾备恢复,Rsy…...
Go应用性能监控:从gorelic指标解析到New Relic迁移实践
1. 项目概述与背景如果你在维护一个用Go语言写的线上服务,特别是那种用户量不小、业务逻辑复杂的后端应用,那么“服务为什么突然变慢了?”、“内存是不是在悄悄泄漏?”、“GC(垃圾回收)是不是太频繁了&…...
第 9 集:GitHub Actions 基础:让 CI 成为 AI 协作的质量闸门
为什么 CI 很重要? 持续集成(CI)是软件开发中的关键实践,它通过自动化流程确保代码更改的质量和稳定性。AI 生成的代码可能表面上看起来正确(例如语法无误),但往往隐藏着潜在问题,如逻辑错误、兼容性问题或回归缺陷。CI 系统(如 GitHub Actions)自动执行一系列检查,…...
