二叉树前中后序遍历

前言

个人小记


一、代码如下

#include<stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NODE 10
#define p()\
{\printf("\n");\
}
typedef struct Node
{int key;int lfag,rfag;struct Node *lchild,*rchild;
}Node;Node* init_node(int key)
{Node* node=(Node*)malloc(sizeof(Node));node->key=key;node->lfag=node->rfag=0;node->lchild=node->rchild=NULL;return node;
}Node* insert(Node* root,int key)
{if(root==NULL)return init_node(key);if(rand()%2) root->lchild=insert(root->lchild,key);else root->rchild=insert(root->rchild,key);return root;
}void clear_node(Node* root)
{if(root==NULL)return ;if(root->lfag==0) clear_node(root->lchild);if(root->rfag==0) clear_node(root->rchild);free(root);return ;
}void pre_order(Node* root)
{if(root==NULL)return ;printf("%d ",root->key);if(root->lfag==0)pre_order(root->lchild);if(root->rfag==0)pre_order(root->rchild);return ;
}void in_order(Node* root)
{if(root==NULL)return ;if(root->lfag==0)in_order(root->lchild);printf("%d ",root->key);if(root->rfag==0)in_order(root->rchild);return ;
}void post_order(Node* root)
{if(root==NULL)return ;if(root->lfag==0)post_order(root->lchild);if(root->rfag==0)post_order(root->rchild);printf("%d ",root->key);return ;
}
Node* new_root=NULL,*pre_node;
void __serial_in_order(Node* root)
{if(root==NULL)return ;if(root->lfag==0)__serial_in_order(root->lchild);if(new_root==NULL)new_root=root;if(root->lchild==NULL){root->lchild=pre_node;root->lfag=1;}if(pre_node&&pre_node->rchild==NULL){pre_node->rchild=root;pre_node->rfag=1;}pre_node=root;if(root->rfag==0)__serial_in_order(root->rchild);return ;
}void serial_in_order(Node*root)
{__serial_in_order(root);pre_node->rchild=NULL;pre_node->rfag=1;return ;
}Node* getnext(Node* node)
{if(node->rfag==1)return node->rchild;node=node->rchild;while(node->lfag==0){node=node->lchild;}return node;
}int main()
{srand((unsigned)time(0));Node* root=NULL;for(int i=0;i<MAX_NODE;i++){root=insert(root,rand()%100);}serial_in_order(root);Node* node=new_root;printf("中序线索化遍历结果为:\n");while(node){printf("%d ",node->key);node=getnext(node);}p();printf("前序遍历结果为:\n");pre_order(root);  p();printf("中序遍历结果为:\n");in_order(root);   p();printf("后续遍历结果为:\n");post_order(root); p();clear_node(root);return 0;
}

二、测试结果

中序线索化遍历结果为:
76 99 23 86 70 59 38 50 28 4 
前序遍历结果为:
86 76 23 99 50 38 70 59 4 28 
中序遍历结果为:
76 99 23 86 70 59 38 50 28 4 
后续遍历结果为:
99 23 76 59 70 38 28 4 50 86 

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

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

相关文章

TENT: FULLY TEST-TIME ADAPTATION BY ENTROPY MINIMIZATION--论文笔记

论文笔记 资料 1.代码地址 https://github.com/DequanWang/tent 2.论文地址 https://arxiv.org/abs/2006.10726 1论文摘要的翻译 在这种完全测试时适应的情况下&#xff0c;模型只有测试数据和自身参数。我们建议通过测试熵最小化&#xff08;tent&#xff09;进行适应&…

虚拟化技术[2]之存储虚拟化

存储虚拟化 存储虚拟化简介存储虚拟化一般模型存储虚拟化实现方式基于主机存储虚拟化基于存储设备存储虚拟化基于网络存储虚拟化 案例分析&#xff1a;VMFSVMFS功能 存储虚拟化简介 存储虚拟化&#xff1a;将存储网络中的各个分散且异构的存储设备按照一定的策略映射成一个统一…

C++学习笔记(19)——模板

目录 模板参数与非类型模板参数 模板参数 类型模板参数——传递类型 非类型模板参数——传递数量 C11希望array替代静态数组&#xff0c;但实际上vector包揽了一切 模板总结 优点&#xff1a; 缺点&#xff1a; 模板特化&#xff1a;针对某些类型进行特殊化处理 特化…

大模型的快速成长

大模型的关键要素有三点,数据&#xff0c;算法和进化的方式. 首先&#xff0c;数据是基础。大量且高质量的数据对于大模型的成长至关重要。不断收集涵盖更广泛领域、更丰富细节的数据&#xff0c;并且确保数据的准确性和代表性。只有在充分的数据滋养下&#xff0c;大模型才能更…

P451 try-Catch异常处理

//基本使用演示代码 public static void main(String[] args) { int num1 10; int num2 0; try { int res num1 / num2; }catch (Exception e) { System.out.println(e.getMessage()); } } public class TryCatchDetail { public static void main(String[] args) { //1. 如…

ubuntu20.04 终端 设置字体大小

##ubuntu20.04 Terminal 终端 设置字体大小 ##打开Terminal 终端&#xff0c;点击Preferences设置字体大小 ##点击unnamed选项卡&#xff0c;打钩Custom font 设置 字体大小

SQL、Mongo、Redis一般适用于那些场景

在一个项目中同时使用 MySQL、Redis 和 MongoDB 是相对常见的做法&#xff0c;因为它们各自具有不同的特点和适用场景&#xff0c;可以组合使用以满足不同的需求。下面是它们的一些常见用途和特点&#xff1a; MySQL&#xff1a; 关系型数据库&#xff1a; MySQL 是一个传统的关…

topsis综合评价法

TOPSIS综合评价法&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff09;是一种多目标决策分析中的有效方法&#xff0c;也被称为优劣解距离法。该方法基于评价对象与理想化目标的接近程度进行排序&#xff0c;从而评估现有对象的相对优劣。…

三前奏:获取/ 读取/ 评估数据【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

二叉树——堆详解

目录 前言&#xff1a; 一、堆的结构 二、向上调整和向下调整 2.1 向上调整 2.2 向下调整 2.3 向上调整和向下调整时间复杂度比较 三、堆的实现 3.1 堆的初始化 3.2 堆的销毁 3.3 堆的插入 3.4堆的删除 3.5 取堆顶元素 3.6 对堆判空 四、堆排序 五、TOP-K 问题 六、代码总…

基于Vue2与3版本的Element UI与Element Plus入门

基于Vue2与3版本的Element UI与Element Plus入门 Element UI 入门安装引入 Element UI使用组件 Element Plus 入门安装引入 Element Plus使用组件 常用组件自定义主题兼容性和升级社区和支持 Element UI 入门 Element UI 是基于 Vue 2.0 的桌面端组件库&#xff0c;它提供了一…

js报错replaceAll不是一个function(特定设备),如何在平板中展示前端控制台

工作记录-前端——replaceAll方法不兼容以及如何在平板调试前端代码&#xff08;看到控制台报错信息&#xff09; 创作场景如何在平板显示控制台第一步第二步 关于replaceAll不兼容问题相同点不同点 如何识别粘贴操作中的换行符下课 创作场景 公司项目要求兼容pc、平板、手机等…

你真正了解 Java 中的 Date 类吗?以及如何正确使用它

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

STC15W408AS读FM24C64写内部IAP点阵显示

#include <reg52.h> //上电后写字符表内容到内部EEPROM #include <intrins.h> //从内部EEPROM取数据显示 #define uchar unsigned char #define uint unsigned int #def…

pygame raycasting纹理

插值原理 原理 color&#xff08;x&#xff09;(x-x1)/(x2-x1)(color2-color1)color1 x1<x<x2 假如说x伪3 那么color&#xff08;3-x1&#xff09;/(x2-x1)(color2-color1)color 可是图片纹理 这里不需要两种颜色&#xff0c;只需要获得碰撞点坐标后&#xff0c;如果…

安卓玩机搞机技巧综合资源----自己手机制作证件照的几种方法 免费制作证件照

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

ES基础概念

本文不介绍如何使用ES&#xff08;使用ES见&#xff1a;&#xff09; 1.ES生态圈 ES&#xff1a; Logstash&#xff1a;数据处理服务程序&#xff0c;解析转换加工数据&#xff1b; Kibana&#xff1a;数据展示、集群管理&#xff0c;数据可视化、ES管理与监控、报表等&#xf…

Nature期刊的等级和分类

Nature期刊不用过多介绍&#xff0c;学术界人员都对其有所了解&#xff0c;可以和Science&#xff0c;Cell比肩&#xff0c;Nature旗下创办了很多子刊&#xff0c;系列期刊有一百多种&#xff0c;当然其含金量各有不同&#xff0c;nature旗下的期刊等级你是否都了解了。 Nature…

设计模式——概述

1.设计模式定义 ​ 设计模式是软件设计中常见问题的典型解决方案,可用于解决代码中反复出现的设计问题。设计模式的出现可以让我们站在前人的肩膀上&#xff0c;通过一些成熟的设计方案来指导新项目的开发和设计&#xff0c;以便于我们开发出具有更好的灵活性和可扩展性&#…

探索SPI单线传输模式中时钟线与数据传输的简化

探索SPI单线传输模式&#xff1a;时钟线与数据传输的简化之道 在当今的嵌入式系统和微控制器通信中&#xff0c;串行外设接口&#xff08;SPI&#xff09;因其高速、全双工和同步的特点而广受欢迎。然而&#xff0c;随着设备尺寸和复杂性的不断减少&#xff0c;对SPI通信的简化…