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

数据结构与算法编程题23

设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
using namespace std;typedef char ElemType;
#define ERROR 0
#define OK 1
#define STR_SIZE 1024
typedef struct BiTNode
{ElemType data;BiTNode* lchild, * rchild;
}BiTNode, * BiTree;void draw(BiTNode* root);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 shuangxubianli(BiTree T)
{if (T == NULL){return;}cout << T->data;shuangxubianli(T->lchild);cout << T->data;shuangxubianli(T->rchild);
}
//---------------------------------核心代码---------------------------------//
/*设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍
历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)*/
//参考:https://www.bilibili.com/video/BV1n5411w72L/?spm_id_from=333.788&vd_source=efe4af6c91047f65ff265133037879f5
//ABC##D##EF##G##
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);shuangxubianli(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);}
}

在这里插入图片描述

相关文章:

数据结构与算法编程题23

设计二叉树的双序遍历算法&#xff08;双序遍历是指对于二叉树的每一个结点来说&#xff0c;先访问这个结点&#xff0c;再按双序遍历它的左子树&#xff0c;然后再一次访问这个结点&#xff0c;接下来按双序遍历它的右子树&#xff09; #define _CRT_SECURE_NO_WARNINGS#inclu…...

小程序中的大道理之二--抽象与封装

继续扒 接着 上一篇 的叙述, 健壮性也有了, 现在是时候处理点实际的东西了, 但我们依然不会一步到底, 让我们来看看. 一而再地抽象(Abstraction Again) 让我们继续无视那些空格以及星号等细节, 我们看到什么呢? 我们只看到一整行的内容, 当传入 3 时就有 3 行, 传入 4 时就…...

基于卷积神经网络CNN开发构建HAR人类行为识别Human Activity Recognition【完整代码实践】

行为识别相关的开发实践在我们之前的博文中也有过相关的实践了,感兴趣的话可以自行移步阅读即可:《python实现基于TNDADATASET的人体行为识别》 《UCI行为识别——Activity recognition with healthy older people using a batteryless wearable sensor Data Set》《人体行为…...

excel自己记录

1、清除换行符号 2、添加特殊符号&并清除换行符号 7日&15日&30日&60日 3、判断单元格最后一个字符是不是数字&#xff0c;不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…...

vcsa6.7 5480无法登录

停电维护硬件后&#xff0c;发现vcsa异常&#xff0c;https://ip:5480无法登录&#xff0c;https://ip/ui正常&#xff0c;ssh登录页正常 kb资料 通过端口 5480 登录到 VMware vCenter Server Appliance Web 控制台失败 (2120477) 操作过程 Connecting to 192.16.20.31:22..…...

CSS 属性列表

CSS属性列表 序号 属性类别 属性 描述 1 动画属性 keyframes 定义一个动画,keyframes定义的动画名称用来被animation-name所使用。 2 animation 复合属性。检索或设置对象所应用的动画特效。 3 animation-name 检索或设置对象所应用的动画名称 ,必须与规则keyfra…...

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…...

脚本自动化定制开发:实现高效工作的魔法钥匙

在当今这个快节奏的工作环境中&#xff0c;自动化已成为提高工作效率的黄金标准。如果你是一名Windows用户&#xff0c;那么通过Windows脚本自动化&#xff0c;你可以将你的工作流程化繁为简&#xff0c;实现高效工作。而在众多Windows脚本自动化工具中&#xff0c;Python以其简…...

使用websocket获取thingsboard设备的实时数据

背景 有一个读者前来咨询,如何实时获取设备的遥测数据。 其实tb是有提供websocket接口来获取设备数据的。而且还支持js跨域调用。下面给大家演示一下。 websocket地址 完整代码 <!DOCTYPE HTML> <html><h...

使用Linux JumpServer堡垒机本地部署与远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装Jump server二. 本地访问jump server三. 安装 cpolar内网穿透软件四. 配…...

js的防抖与节流

目录 一、防抖 实现方式 二、节流 实现方式 一、防抖 所谓防抖&#xff0c;单位时间内&#xff0c;某个动作只能执行矗后一次&#xff0c;可以用在搜索框业务中。 性能优化的手段 防抖 --- 在同一时间内 频繁触发事件,只处理最后一次 实现方式 1、用第三方库Lodash防抖的…...

中职组网络安全-Windows操作系统渗透测试 -20221219win(环境+解析)

B-4:Windows操作系统渗透测试 任务环境说明: 服务器场景:20221219win 服务器场景操作系统:Windows(版本不详)(封闭靶机) 1.通过本地PC中渗透测试平台Kali对服务器场景Server08进行系统服务及版本扫描渗透测试,并将该操作显示结果中1433端口对应的服务版本信息作为F…...

git本地账户如何从一台电脑迁移到另外一台

为了表述方便&#xff0c;我们此处用旧电脑、新电脑指代。 在新电脑上安装git 例如&#xff0c;我旧电脑上安装的git版本是2.33.1版本&#xff0c;新电脑安装git的版本是2.43.0&#xff0c;这不妨碍迁移。 将git的全局配置文件从旧电脑拷贝到新电脑 Git的全局配置文件&…...

HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!

一、包含的软件开发工具包 HOOPS Web平台帮助开发人员构建基于Web的工程应用程序&#xff0c;提供高级3D Web可视化、准确快速的CAD数据访问和3D数据发布。 HOOPS Web平台包括三个集成软件开发工具包 (SDK)&#xff1a; &#xff08;1&#xff09;Web端3D可视化引擎 HOOPSCom…...

GDB Debugging Notes

1 Debugging programs using gdb 1.1 gdb简介 gdb是一个功能强大的调试工具&#xff0c;可以用来调试C程序或C程序。在使用这个工具进行程序调试时&#xff0c;主要涉及下面几个方面的操作&#xff1a; 启动程序:在启动程序时&#xff0c;可以设置程序运行环境。设置断点:程序…...

Azure Machine Learning - 创建Azure AI搜索服务

目录 准备工作查找 Azure AI 搜索产品/服务选择订阅设置资源组为服务命名选择区域选择层创建服务配置身份验证扩展服务何时添加第二个服务将多个服务添加到订阅 Azure AI 搜索是用于将全文搜索体验添加到自定义应用的 Azure 资源&#xff0c;本文介绍如何创建Azure AI搜索服务 …...

鸿蒙(HarmonyOS)应用开发——安装DevEco Studio安装

前言 HarmonyOS华为开发的操作系统&#xff0c;旨在为多种设备提供统一的体验。它采用了分布式架构&#xff0c;可以在多个设备上同时运行&#xff0c;提供更加流畅的连接和互动。HarmonyOS的目标是提供更高的安全性、更高效、响应更快的用户体验&#xff0c;并通过跨设备功能…...

成都数字孪生技术推进制造业升级,工业物联网可视化应用加速

成都数字孪生技术推进制造业升级&#xff0c;工业物联网可视化应用加速。灯塔工厂转型的关键在于第四次工业革命新技术的应用。数字孪生灯塔工厂是工业4.0技术的应用典范&#xff0c;工业4.0的核心技术包括&#xff1a;数字孪生、大数据分析&#xff0c;工业物联网&#xff0c;…...

管理类联考——数学——汇总篇——知识点突破——代数——函数——记忆

文章目录 整体文字提炼图像绘画 考点记忆/考点汇总——按大纲 本篇思路&#xff1a;根据各方的资料&#xff0c;比如名师的资料&#xff0c;按大纲或者其他方式&#xff0c;收集/汇总考点&#xff0c;即需记忆点&#xff0c;在通过整体的记忆法&#xff0c;比如整体信息很多&am…...

Flash Attention:高效注意力机制的突破与应用

注意力机制彻底改变了自然语言处理和深度学习领域。它们允许模型在执行机器翻译、语言生成等任务时专注于输入数据的相关部分。 在这篇博客[1]中&#xff0c;我们将深入研究被称为“Flash Attention”的注意力机制的突破性进展。我们将探讨它是什么、它是如何工作的&#xff0c…...

需求释放不足压力导致2520不锈钢管市场缺乏突破动力

无锡佳钛合不锈钢有限公司在全球经济波动、需求疲软叠加成本高企多重因素影响下&#xff0c;历经了多重考验&#xff0c;告别2025年单边下跌行情。进入2026年2520不锈钢管市场在宏观政策预期双焦及铁矿石高成本的带领下&#xff0c;2520不锈钢管价格逐步好转&#xff0c;2520不…...

如何3分钟解决百度网盘提取码难题:baidupankey完全指南

如何3分钟解决百度网盘提取码难题&#xff1a;baidupankey完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错过重要资源&#xff1f;当朋友分享学习资料、同事发送工作文件&#xff…...

Spring Boot 4.0 Agent-Ready 架构面试高频题全解,含ByteBuddy动态代理源码级剖析(附ASM vs ByteBuddy性能对比基准测试)

第一章&#xff1a;Spring Boot 4.0 Agent-Ready 架构面试概览Spring Boot 4.0 正式引入 Agent-Ready 架构设计范式&#xff0c;标志着其运行时可观测性、动态增强与非侵入式诊断能力进入全新阶段。该架构并非简单叠加 Java Agent 支持&#xff0c;而是将字节码增强、JVM 生命周…...

网络舆情监控中的情感分析与事件检测

网络舆情监控中的情感分析与事件检测 在信息爆炸的时代&#xff0c;社交媒体、新闻平台和论坛等渠道每天产生海量数据&#xff0c;如何从中提取有价值的信息成为企业和政府的重要课题。网络舆情监控通过情感分析与事件检测技术&#xff0c;帮助管理者洞察公众情绪、发现潜在危…...

快速部署ComfyUI Qwen:人脸生成图像环境搭建与模型加载

快速部署ComfyUI Qwen&#xff1a;人脸生成图像环境搭建与模型加载 1. 环境准备与快速部署 1.1 系统要求检查 在开始部署前&#xff0c;请确保你的设备满足以下最低配置要求&#xff1a; 操作系统&#xff1a;Windows 10/11 64位、macOS 10.15或Linux发行版&#xff08;如U…...

111113345

1111111111111...

【Dify 2026微调实战白皮书】:首发业内唯一支持LoRA+QLoRA+Adapter三模协同的端到端微调框架

第一章&#xff1a;Dify 2026微调框架全景概览Dify 2026 是面向企业级大模型应用落地的下一代低代码微调框架&#xff0c;聚焦于“可解释性微调”与“多粒度适配”两大核心能力。它不再将微调视为黑盒参数更新过程&#xff0c;而是通过声明式配置、运行时干预和反馈闭环机制&am…...

可学习上采样方法改进YOLOv5特征图恢复:从原理到实战全解析

摘要 YOLOv5作为经典的单阶段目标检测算法,在特征金字塔网络中采用最近邻插值进行上采样,该方法虽然计算高效但不可学习,限制了特征恢复的质量。本文提出使用可学习上采样方法(Carafe、DySample、IndexNet等)替代传统插值,通过引入空间感知的上采样核预测机制,显著提升…...

别再为BGA扇出挠头了!用Allegro的无盘设计,轻松搞定0.8mm间距芯片的走线

突破BGA布线极限&#xff1a;Allegro无盘设计实战指南 在当今高速PCB设计领域&#xff0c;BGA封装芯片的布线挑战日益严峻。当面对0.8mm甚至更小间距的BGA芯片时&#xff0c;传统布线方法往往捉襟见肘——差分对无法保持等长、电源通道拥挤不堪、过孔区域几乎无处下脚。这些困境…...

AlixLabs APS技术:绕过EUV实现图形化,有望降低晶圆每层掩模成本40%!

AlixLabs APS技术&#xff1a;绕过EUV实现图形化&#xff0c;有望降低晶圆成本40%&#xff01;在过去几十年的半导体演进里&#xff0c;每一次微缩都离不开光刻能力的支持。从DUV到EUV&#xff0c;从193nm到13.5nm&#xff0c;再到High - NA EUV&#xff0c;整个产业链围绕一个…...