数据结构-树-006

1二叉树

1.1目标二叉树

在这里插入图片描述

前序遍历:ABDHIEJCFKG
中序遍历:HDIBEJAFKCG
后序遍历:HIDJEBKFGCA
层序遍历:ABCDEFGHIJK

运行结果:

运行结果符合目标二叉树的深度优先(前序遍历,中序遍历,后序遍历)遍历结果。

在这里插入图片描述

树的表示:char sex[]={'A','B','D','H','#','#','I','#','#','E','#','J','#','#','C','F','#','K','#','#','G','#','#'};

说明:

这里自定义数据类型是一个结构体,为了快速实现该二叉树,使用了自定义数据类型中的成员【sex】,其它成员未进行操作。

1.2树的结点结构体定义

/*==========自定义数据类型==========*/
typedef struct student
{char name[32];char sex;int age;
}DATA_TYPE;
/*==========定义一个树结点==========*/
typedef struct tree_node
{DATA_TYPE data;//数据域struct tree_node *left_child;struct tree_node *right_child;
}TREE_NODE;

1.3创建一个二叉树

/*==========创建一个二叉树==========*/
TREE_NODE *create_binary_tree(void)
{DATA_TYPE data;TREE_NODE *pnode=NULL;data.sex=sex[tree_create_index++];if('#'==data.sex){return NULL;}/*创建一个二叉树结点*/pnode=malloc(sizeof(TREE_NODE));if(NULL==pnode){perror("fail to malloc");return NULL;}/*新结点初始化*/pnode->data=data;pnode->left_child=create_binary_tree();pnode->right_child=create_binary_tree();return pnode;
}

1.4树的遍历

自定义树的遍历方式:

/*==========遍历方式==========*/
void show_data(TREE_NODE *proot)
{printf("%-10s\t%-10c\t%-10d\n",proot->data.name,proot->data.sex,proot->data.age);
}

1.4.1前序遍历

/*==========前序遍历==========*/
void preorder_traversal(TREE_NODE *proot,void (*pfun)(TREE_NODE *))
{if(NULL==proot){return ;}pfun(proot);preorder_traversal(proot->left_child,pfun);preorder_traversal(proot->right_child,pfun);
}

1.4.1中序遍历

/*==========中序遍历==========*/
void inorder_traversal(TREE_NODE *proot,void (*pfun)(TREE_NODE *))
{if(NULL==proot){return ;}inorder_traversal(proot->left_child,pfun);pfun(proot);inorder_traversal(proot->right_child,pfun);
}

1.4.1后序遍历

/*==========后序遍历==========*/
void postorder_traversal(TREE_NODE *proot,void (*pfun)(TREE_NODE *))
{if(NULL==proot){return ;}postorder_traversal(proot->left_child,pfun);postorder_traversal(proot->right_child,pfun);pfun(proot);
}

1.4.1层序遍历

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

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

相关文章

APP软件开发是选择iOS还是Android两者的优势是什么

在选择开发iOS还是Android应用程序时,开发者需要考虑多方面因素,包括目标用户群体、市场份额、开发成本和技术要求等。下面将从不同角度对iOS和Android应用程序开发进行比较,并提供关于选择的建议。 一.用户群体与市场份额: 1.iOS…

Pandoc下载和安装笔记

目录 一、下载 二、安装 1、安装软件 2、测试是否安装成功 Pandoc 的作者是 John MacFarlane,John MacFarlane是美国加州大学伯克利分校的哲学系的一位教授。编写Pandoc 用来生成讲义、课件和网站等。程序开源免费,目前以 GPL 协议托管在 Github 网站…

电脑控制面板在哪?5招教你快速打开!

“我在执行一个任务时要进入电脑的控制面板中查看,但是我不知道电脑的控制面板在哪,谁能帮帮我呀?” 电脑控制面板是一个系统文件夹,它提供了各种对计算机系统进行设置和管理的工具。控制面板允许用户查看并操作基本的系统设置&am…

数据结构 --- 复杂度概念及计算讲解(时间复杂度,空间复杂度)

今天没有sao话,今天认真学习 一、时间复杂度 1、概念讲解 2、计算讲解 二、空间复杂度 1、概念讲解 2、计算讲解 三、常见复杂度对比 四、完结撒❀ 前言: 经常刷题的人都知道,我们在解决一道题时可能有多个解法,那么如何…

【python】flask模板渲染引擎Jinja2,使得前后端交互更加便捷

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

nginx详解(持续更新)

nginx定义 nginx安装 nginx目录 程序相关命令 服务相关命令 虚拟主机(server) 路由匹配(location) 代理(proxy_pass) 正向代理 反向代理 负载均衡(upstream) 负载均衡策略 动静分…

【EPLAN】授权-MAX100.17问题解决

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决EPLAN 客户端授权连接时出现-MAX100.17 报错问题; 2、 问题场景 用于解决在EPLAN 客户端授权连接时,出现-MAX100.17 报错:无法建立与EPLAN Client Service[MAX 100.17] 的连…

13_Linux内核配置选项

内核配置选项 内核配置通常是对内核支持的各个功能进行取舍配置,将配置的方案保存到 configure文件中。在编译内核的时候,就会根据此配置对内核进行取舍编译。 编译内核之前要先配置。为了正确、合理地设置内核编译配置选项,从而只编译系统需…

前端部署到服务器,使用xshell和xftp

最近在做一个项目的时候,需要搭建测试环境,所以记录一下部署过程,备忘。 前台项目用到的是nuxt2,后台管理系统用的是vue2,后端用的是egg。 因为我们的后端已经在服务器上设置Nginx了,所以我们只需要简单的…

宜搭低代码高级认证实操题1 todolist

进行中待办 已完成待办 待办事项 待办事项远程api和变量配置 回调函数 function didFetch(content) {//console.log(content.data);// content.b 1; 修改返回数据结构中的 b 字段为1let res content.data;let todoList [];for(let i in res){todoList.push(res[i]);}consol…

本地部署大模型的几种工具(上-相关使用)

目录 前言 为什么本地部署 目前的工具 vllm 介绍 下载模型 安装vllm 运行 存在问题 chatglm.cpp 介绍 下载 安装 运行 命令行运行 webdemo运行 GPU推理 ollama 介绍 下载 运行 运行不同参数量的模型 存在问题 lmstudio 介绍 下载 使用 下载模型文件…

【Functional Affordances】机器人manipulation

文章目录 1. Robo-ABC: Affordance Generalization Beyond Categories via Semantic Correspondence for Robot Manipulation摘要和结论引言相关工作模型框架实验 2. Click to Grasp: Zero-Shot Precise Manipulation via Visual Diffusion Descriptors摘要和结论引言模型框架实…