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

数据结构与算法编程题24

中序遍历非递归算法

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
using namespace std;typedef char ElemType;
#define ERROR 0
#define OK 1
#define Maxsize 100
#define STR_SIZE 1024typedef struct BiTNode
{ElemType data;BiTNode* lchild, * rchild;
}BiTNode, * BiTree;void draw(BiTNode* root);//-------------------------堆栈操作---------------------------//
typedef struct SqStack
{BiTNode* data[Maxsize];int top;
}SqStack;void Init_Stack(SqStack& S)
{S.top = -1;
}bool Stack_Empty(SqStack S)
{if (S.top == -1){cout << "堆栈为空!!!" << endl;return OK;}return ERROR;
}bool Push(SqStack& S, BiTNode* x)
{if (S.top == Maxsize - 1){cout << "堆栈已经满,无法继续推入数据!!!" << endl;return ERROR;}S.data[++S.top] = x;return OK;
}bool Pop(SqStack& S, BiTNode* &x)
{if (S.top == -1){cout << "堆栈为空,无法继续推出数据!!!" << endl;return ERROR;}x = S.data[S.top--];cout << "推出元素为: " << x << endl;return OK;
}
//-------------------------堆栈操作---------------------------//
bool Create_tree(BiTree& T) //递归创建二叉树
{ElemType x = 0;cin >> x;if (x == '#'){T = NULL;}else{T = (BiTree)malloc(sizeof(BiTNode));if (T == NULL){cout << "内存无法分配!!!" << endl;return ERROR;}T->data = x;T->lchild = NULL;T->rchild = NULL;Create_tree(T->lchild);Create_tree(T->rchild);}return OK;
}void PreOrder(BiTree T)   //前序遍历非递归
{if (T != NULL){cout << T->data;PreOrder(T->lchild);PreOrder(T->rchild);}
}void InOrder(BiTree T)    //中序遍历非递归
{if (T != NULL){InOrder(T->lchild);cout << T->data;InOrder(T->rchild);}
}void PostOrder(BiTree T)  //后序遍历非递归
{if (T != NULL){PostOrder(T->lchild);PostOrder(T->rchild);cout << T->data;}
}
//---------------------------------核心代码---------------------------------//
void InOrder_2(BiTree T)
{BiTNode* p = T;SqStack S;Init_Stack(S);while (p != NULL|| Stack_Empty(S)!=OK){if (p != NULL){Push(S, p);p = p->lchild;}else{Pop(S, p);cout << p->data<<endl;p = p->rchild;}}
}
//---------------------------------核心代码---------------------------------//
//中序遍历非递归算法
//AB#D##C##
int main(void)
{cout << "//------生成一颗树---------//" << endl;BiTree T = NULL;Create_tree(T);PreOrder(T);cout << endl;InOrder(T);cout << endl;PostOrder(T);cout << endl;cout << "//------生成一颗树---------//" << endl;cout << "//------原始树图形---------//" << endl;draw(T);InOrder_2(T);return 0;
}//参考博客:https://blog.csdn.net/weixin_42109012/article/details/92250160
/*****************************************************************************
* @date   2020/4/19
* @brief  水平画树
* @param  node	二叉树节点
* @param  left	判断左右
* @param  str 	可变字符串
*****************************************************************************/
void draw_level(BiTNode* node, bool left, char* str) {if (node->rchild) {draw_level(node->rchild, false, strcat(str, (left ? "|     " : "      ")));}printf("%s", str);printf("%c", (left ? '\\' : '/'));printf("-----");printf("%c\n", node->data);if (node->lchild) {draw_level(node->lchild, true, strcat(str, (left ? "      " : "|     ")));}//  "      " : "|     " 长度为 6str[strlen(str) - 6] = '\0';
}/*****************************************************************************
* @date   2020/4/19
* @brief  根节点画树
* @param  root	二叉树根节点
*****************************************************************************/
void draw(BiTNode* root) {char str[STR_SIZE];memset(str, '\0', STR_SIZE);/*** 1. 在 windows 下,下面是可执行的* 2. 在 Linux   下,执行会报 Segmentation fault*      需要使用中间变量*/if (root->rchild) {draw_level(root->rchild, false, str);}printf("%c\n", root->data);if (root->lchild) {draw_level(root->lchild, true, str);}
}

在这里插入图片描述

相关文章:

数据结构与算法编程题24

中序遍历非递归算法 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }B…...

springsecurity6配置四

一、springsecurity自定义过滤url配置 package com.school.information.config;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;import java.util.List;/*** 需要放行的…...

OpenCV简介及安装

前言 因为最近想做图像处理、人脸检测/识别之类的相关开发&#xff0c;所以就开始补OpenCV的相关知识&#xff0c;便开个专栏用于记录学习历程和在学习过程中遇到的一些值得注意的重点和坑。 学习过程基本上也是面向官方文档和Google。 简介 OpenCV(开源的计算机视觉库)是基于…...

Unity调用dll踩坑记

请用写一段代码&#xff0c;让unity无声无息的崩溃。 你说这怕是有点难哦&#xff0c;谁会这么不幸呢&#xff1f;不幸的是&#xff0c;我幸运的成为了那个不幸的人。 unity里面调用dll的方式是使用 DllImport &#xff0c;比如有一个 Hello.dll&#xff0c;里面有一个 char* …...

Oracle 数据库基线安全加固操作

目录 账号管理、认证授权 ELK-Oracle-01-01-01 ELK-Oracle-01-01-02 ​​​​​​​ELK-Oracle-01-01-03 ​​​​​​​ELK-Oracle-01-01-04 ​​​​​​​ELK-Oracle-01-01-05 ​​​​​​​ELK-Oracle-01-01-06 ​​​​​​​ ELK-Oracle-01-01-07 ​​​​​​​ …...

安装最新版WebStorm来开发JavaScript应用程序

安装最新版WebStorm来开发JavaScript应用程序 Install the Latest Version of JetBrains WebStorm to Develop JavaScript Applications By JacksonML 2023-11-25 1. 系统要求 WebStorm是个跨平台集成开发环境&#xff08;IDE&#xff09;。按照JetBrains官网对WebStorm软件…...

python opencv 放射变换和图像缩放-实现图像平移旋转缩放

python opencv 放射变换和图像缩放-实现图像平移旋转缩放 我们实现这次实验主要用到cv2.resize和cv2.warpAffine cv2.warpAffine主要是传入一个图像矩阵&#xff0c;一个M矩阵&#xff0c;输出一个dst结果矩阵&#xff0c;计算公式如下&#xff1a; cv2.resize则主要使用fx&…...

安装Anaconda、PyTorch(GPU版)库与PyCharm】

【Python深度学习&#xff1a;安装Anaconda、PyTorch&#xff08;GPU版&#xff09;库与PyCharm】https://www.bilibili.com/video/BV1cD4y1H7Tk?vd_source0aeb782d0b9c2e6b0e0cdea3e2121ebadownload.pytorch.org/whl/torchaudio/更改Jupyter Notebook的默认路径&#xff0c;亲…...

关于pytorch以及相关包的安装教程

一.查看自己电脑的配置 首先查看自己电脑的cuda的版本&#xff0c;WinR,敲入cmd打开终端 输入nvidia-smi&#xff0c;查看自己电脑的显卡等配置 这里要说明一下关于这个CUDA,它具有向后兼容性&#xff0c;这意味着支持较低版本的 CUDA 的应用程序通常也可以在较高版本的 CUD…...

AnalyticDB for PostgreSQL 实时数据仓库上手指南

AnalyticDB for PostgreSQL 实时数据仓库上手指南 2019-04-016601 版权 本文涉及的产品 云原生数据仓库 ADB PostgreSQL&#xff0c;4核16G 50GB 1个月 推荐场景&#xff1a; 构建的企业专属Chatbot 立即试用 简介&#xff1a; AnalyticDB for PostgreSQL 提供企业级数…...

【数据结构】堆(C语言)

今天我们来学习堆&#xff0c;它也是二叉树的一种&#xff08;我滴神树&#xff01;&#xff09; 目录 堆的介绍&#xff1a;堆的代码实现&#xff1a;堆的结构体创建&#xff1a;堆的初始化&#xff1a;堆的销毁&#xff1a;堆的push&#xff1a;堆的pop&#xff1a;判空 &am…...

使用 Raspberry Pi、Golang 和 HERE XYZ 制作实时地图

到目前为止&#xff0c;您可能已经看过我的一些与 Raspberry Pi 和位置数据相关的教程。我是这些小型物联网 (IoT) 设备的忠实粉丝&#xff0c;并编写了有关使用 Golang 进行 WLAN 定位 和 使用 Node.js 进行 GPS 定位的教程。 我想继续沿着 Golang 路线&#xff0c;做一个关于…...

贪吃蛇(c实现)(真的超级超级简单)

1.代码请看贪吃蛇c实现 王赫辰/c语言 - 码云 - 开源中国 (gitee.com) 2.本项目宗旨&#xff1a; 1.不引入复杂的库函数&#xff08;其他博主的全是陌生库函数看不懂&#xff1f;看我就对了&#xff01;◕‿◕&#xff09; 2.不使用c语法 &#xff08;都说了c实现&#xff0c;…...

linux 内存回收mglru算法代码注释2

mglru与原lru算法的兼容 旧的lru算法有active与inactive两代lru&#xff0c;可参考linux 内存回收代码注释&#xff08;未实现多代lru版本&#xff09;-CSDN博客 新的算法在引入4代lru的同时&#xff0c;还引入了tier的概念。 新旧算法的切换的实现在lru_gen_change_state&a…...

Exchange意外登录日志

最近在审计Exchange邮件系统的时候&#xff0c;发现大量用户半夜登录的日志。而且都是成功的&#xff0c;几乎没有失败的情况。其中Logon Type 8表示用户从网络登录。 Logon type 8: NetworkCleartext. A user logged on to this computer from the network. The user’s pas…...

NX二次开发UF_CURVE_ask_curve_turn_angle 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_turn_angle Defined in: uf_curve.h int UF_CURVE_ask_curve_turn_angle(tag_t curve, double orientation [ 3 ] , double * angle ) overview 概述 Returns …...

UE 进阶篇一:动画系统

导语: 下面的动画部分功能比较全,可以参考这种实现方式,根据自己项目的颗粒度选择部分功能参考,我们商业项目动画部分也是这么实现的。 最后实现的效果如下: 最终效果 目录: ------------------------------------------- 文末有视频教程/工程地址链接 -------------…...

超文本传输协议

超文本传输协议&#xff08;HypertextTransfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出&#xff1b;而消息内容…...

『heqingchun-Ubuntu系统+x86架构+编译安装ffmpeg+带有nvidia硬件加速』

Ubuntu系统x86架构编译安装ffmpeg带有nvidia硬件加速 一、准备文件 注&#xff1a;可直接下载我上传的CSDN资源&#xff0c;然后直接跳到"一"中的第"3"项"将文件按以下顺序存放"。 ffmpeg源码&#xff1a;音视频开发ffmpeg编译所需资源文件 其…...

UE5 UI教程学习笔记

参考资料&#xff1a;https://item.taobao.com/item.htm?spma21n57.1.0.0.2b4f523cAV5i43&id716635137219&ns1&abbucket15#detail 基础工程&#xff1a;https://download.csdn.net/download/qq_17523181/88559312 1. 介绍 工程素材 2. 创建Widget UE5 UI系统的…...

c++怎么获取文件在磁盘上的真实占用空间_stat结构体分析【详解】

_stat 无法直接获取文件真实磁盘占用&#xff0c;必须结合 GetDiskFreeSpace 获取簇大小后向上取整计算&#xff1b;Windows 下 st_blocks 未实现&#xff0c;st_blksize 恒为512且无效&#xff0c;UNC路径和特殊文件&#xff08;稀疏、压缩、符号链接&#xff09;需额外处理。…...

告别AI幻觉陷阱!让写作避免学术不端风险

在科研产出压力与日俱增的今天&#xff0c;不少科研人员选择用通用AI工具辅助撰写文献综述&#xff0c;试图缩短调研与写作周期。但随之而来的“AI幻觉”问题&#xff0c;却成了悬在大家头顶的达摩克利斯之剑——虚构的文献标题、子虚乌有的作者、凭空捏造的研究结论&#xff0…...

Dify合规问答配置失效真相:3家持牌机构被罚案例背后的2个底层配置逻辑漏洞

第一章&#xff1a;Dify合规问答配置失效真相&#xff1a;3家持牌机构被罚案例背后的2个底层配置逻辑漏洞近期&#xff0c;银保监会通报的三起AI问答系统违规事件中&#xff0c;涉事机构均使用Dify搭建面向公众的金融知识问答服务&#xff0c;但其“敏感词拦截”与“答案溯源强…...

OFA图像语义蕴含模型保姆级部署指南:从零到一搭建Web应用

OFA图像语义蕴含模型保姆级部署指南&#xff1a;从零到一搭建Web应用 1. 项目概述与技术背景 1.1 什么是图像语义蕴含 图像语义蕴含&#xff08;Visual Entailment&#xff09;是多模态AI领域的一项重要任务&#xff0c;它需要系统判断给定的文本描述是否能够从图像内容中逻…...

ROS机器人系统与URDF建模入门

一、机器人系统的核心组成一个完整的机器人&#xff0c;本质是“感知-决策-执行”的闭环系统&#xff0c;就像一个精密协作的生命体&#xff0c;四大核心模块各司其职、相互配合&#xff0c;缺一不可。从控制角度来看&#xff0c;分别是执行机构、驱动系统、传感系统、控制系统…...

别再让JSON字段毁了你的业务代码:从阿里商品中台案例看领域模型与数据模型的正确分工

领域模型与数据模型的分工艺术&#xff1a;从阿里商品中台实践看架构设计的本质 记得三年前接手一个电商促销系统重构时&#xff0c;我发现前任开发者将所有营销规则都塞进了一个名为promotion_rules的JSON字段里。当需要增加"限购地区"功能时&#xff0c;团队直接在…...

别再傻傻分不清了!SDN南向接口和南向协议到底有啥区别?

解码SDN南向通信&#xff1a;从接口概念到协议实战的深度解析 想象一下你刚搬进一套智能家居系统&#xff0c;墙上布满各种插座&#xff08;接口&#xff09;&#xff0c;而你的电器设备需要对应插头&#xff08;协议&#xff09;才能接入电源。在SDN的世界里&#xff0c;南向…...

别再为Flink测试发愁了!5分钟搞定Kafka单机版(含Zookeeper配置避坑指南)

5分钟极速搭建Kafka单机测试环境&#xff1a;从避坑到实战 当你在深夜调试Flink流处理作业时&#xff0c;是否曾被复杂的Kafka测试环境搞得焦头烂额&#xff1f;作为分布式消息系统的标杆&#xff0c;Kafka在实时数据处理中扮演着关键角色&#xff0c;但它的配置复杂度常常让开…...

不止是国产替代:聊聊openEuler在云原生和边缘计算里的那些‘黑科技’

不止是国产替代&#xff1a;openEuler在云原生与边缘计算中的技术突破 当开发者谈论现代操作系统时&#xff0c;往往聚焦于Linux内核的通用性&#xff0c;却忽略了不同场景下的特殊需求。openEuler正通过一系列技术创新&#xff0c;重新定义数字基础设施的操作系统体验。这不是…...

youlai-mall认证授权中心:Spring Authorization Server OAuth2扩展

youlai-mall认证授权中心&#xff1a;Spring Authorization Server OAuth2扩展 【免费下载链接】youlai-mall &#x1f680;基于 Spring Boot 3、Spring Cloud & Alibaba 2022、SAS OAuth2 、Vue3、Element-Plus、uni-app 构建的开源全栈商城。 项目地址: https://gitcod…...