25、数据结构/二叉树相关练习20240207

一、二叉树相关练习

请编程实现二叉树的操作

1.二叉树的创建

2.二叉树的先序遍历

3.二叉树的中序遍历

4.二叉树的后序遍历

5.二叉树各个节点度的个数

6.二叉树的深度

代码:

#include<stdlib.h>
#include<string.h>
#include<stdio.h>
typedef struct node//定义二叉树节点结构体
{int data;struct node *left;struct node *right;
}*binary;
binary create_node()//创建节点并初始化
{binary s=(binary)malloc(sizeof(struct node));if(NULL==s)return NULL;s->data=0;s->left=NULL;s->right=NULL;return s;
}
binary binary_tree()
{int element;printf("please enter element(end==0):");scanf("%d",&element);if(0==element)return NULL;binary tree=create_node();tree->data=element;tree->left=binary_tree();tree->right=binary_tree();return tree;
}
void first_output(binary tree)
{if(tree==NULL)return;printf("%d ",tree->data);first_output(tree->left);first_output(tree->right);
}
void mid_output(binary tree)
{if(NULL==tree)return;mid_output(tree->left);printf("%d ",tree->data);mid_output(tree->right);
}
void last_output(binary tree)
{if(NULL==tree)return;last_output(tree->left);last_output(tree->right);printf("%d ",tree->data);
}
void limit_tree(binary tree,int *n0,int *n1,int *n2)
{if(NULL==tree)return;if(tree->left&&tree->right)++*n2;else if(!tree->left && !tree->right)++*n0;else++*n1;limit_tree(tree->left,n0,n1,n2);limit_tree(tree->right,n0,n1,n2);
}
int high_tree(binary tree)
{if(NULL==tree)return 0;int left=1+high_tree(tree->left);int right=1+high_tree(tree->right);return left>right?left:right;
}
int main(int argc, const char *argv[])
{binary tree=binary_tree();//创建二叉树first_output(tree);//先序遍历puts("");mid_output(tree);//中序遍历puts("");last_output(tree);//后序遍历puts("");int n0=0,n1=0,n2=0;limit_tree(tree,&n0,&n1,&n2);//计算各个度的节点的个数;printf("n0=%d,n1=%d,n2=%d\n",n0,n1,n2);int high=high_tree(tree);//计算二叉树深度;printf("the high of the binary tree is:%d\n",high);return 0;
}

以下图二叉树为例运行结果:

二叉树图:

运行:

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

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

相关文章

Java面向对象 封装

目录 封装的概念“高内聚&#xff0c;低耦合”封装的好处实例案例测试 封装的概念 封装是把过程和数据包围起来&#xff0c;对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念&#xff0c;即现实世界可以被描绘成一系列完全自治、封装的对象&#xff0c;这些对…

0207作业

继承&#xff1a;是 C中类的一个重要特性&#xff0c;它允许一个类从另一个类中继承成员变量和成员函数。通过继承&#xff0c;可以在子类中重用父类的代码&#xff0c;并可以根据需要进行扩展和修改。继承关系形成了类的层次结构。 虚继承&#xff1a;是一种特殊的继承方式&a…

Python 深入理解 os 和 sys 模块

Python 深入理解 os 和 sys 模块 OS 介绍代码智能连接&#xff08;拼接&#xff09;路径创建目录展示&#xff08;列出目录&#xff09;删除文件重命名文件或目录 sys 介绍代码命令行参数处理 (sys.argv)标准输入输出重定向 (sys.stdin, sys.stdout, sys.stderr)&#xff1a;解…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.1 一主双从3.2 项目搭建3.3 配置3.4 测试4.…

查看NodeJs版本和查看NPM版本

Windows10 Dos命令下 查看NodeJs版本和查看NPM版本 NodeJs的命令是&#xff1a;node -v Npm的命令是&#xff1a;npm -v 下图&#xff1a; 记录下&#xff01;~

JavaScript基础(28)_获取元素的其他样式

其他样式操作的属性 clientWidth(只读)&#xff1a;获取元素的"可见宽度"&#xff0c;包括内容区和内边距(返回的是一个数字&#xff0c;不带px&#xff0c;可直接进行计算)。 clientHeight(只读)&#xff1a;获取元素的"可见高度"&#xff0c;包括内容区…

推荐收藏!数据分析岗最走心的面经!

年底了&#xff0c;技术群组织了一场机器学习算法岗技术&面试讨论会&#xff0c;邀请了一些同学分享他们的面试经历&#xff0c;讨论会会定期召开&#xff0c;如果你想加入我们的讨论群或者希望要更详细的资料&#xff0c;文末加入。 喜欢本文记得收藏、关注、点赞 &#…

Redis篇之分布式锁

一、为什么要使用分布式锁 1.抢劵场景 &#xff08;1&#xff09;代码及流程图 &#xff08;2&#xff09;抢劵执行的正常流程 就是正好线程1执行完整个操作&#xff0c;线程2再执行。 &#xff08;3&#xff09;抢劵执行的非正常流程 因为线程是交替进行的&#xff0c;所以有…

BUUCTF-Real-[Tomcat]CVE-2017-12615

目录 漏洞描述 一、漏洞编号&#xff1a;CVE-2017-12615 二、漏洞复现 get flag 漏洞描述 CVE-2017-12615&#xff1a;远程代码执行漏洞 影响范围&#xff1a;Apache Tomcat 7.0.0 - 7.0.79 (windows环境) 当 Tomcat 运行在 Windows 操作系统时&#xff0c;且启用了 HTTP P…

【python绘图】爱心、樱花树、饼图、折线图、雷达图

一、爱心 import turtledef curvemove():for i in range(200):turtle.speed(0)turtle.right(1) # 光标向右偏1度turtle.forward(1)# 前进1pxturtle.penup() turtle.goto(0, -70) turtle.pendown()turtle.color(red) turtle.begin_fill() turtle.left(140) turtle.forward(111…

【C++】中的 inline 用法

1、引入 inline 关键字的原因 在 c/c 中&#xff0c;为了解决一些频繁调用的小函数大量消耗栈空间&#xff08;栈内存&#xff09;的问题&#xff0c;特别的引入了 inline 修饰符&#xff0c;表示为内联函数。 栈空间就是指放置程序的局部数据&#xff08;也就是函数内数据&a…

Maven之安装自定义jar到本地Maven仓库中

Maven之安装自定义jar到本地Maven仓库中 文章目录 Maven之安装自定义jar到本地Maven仓库中1. 命令行窗口安装方式1. 常用参数说明2. 安装实例 2. IDEA中安装方式3. 使用 1. 命令行窗口安装方式 安装指定文件到本地仓库命令&#xff1a;mvn install:install-file; 在windows的cm…