树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)

二叉树的基本操作(源代码)

#include "stdio.h"

#include "malloc.h"

#define MAX 100

typedef struct node{

int date;

struct node *lchild,*rchild;

}bitnode,*bitree;

bitree createbitree(bitree bt){

int m;

printf("m=");

scanf("%d",&m);

if(m==-1)

bt=NULL;

else{

bt=(bitnode *)malloc(sizeof(bitnode));

bt->date=m;

bt->lchild=createbitree(bt->lchild);

bt->rchild=createbitree(bt->rchild);

}

return bt;

}//树的建立

void leveltraverse(bitree bt){

bitree queue[MAX],p=bt;

int rear=0,front=0;

if(p!=NULL){

queue[++rear]=p;

while(frontdate);

if(p->lchild!=NULL)

queue[++rear]=p->lchild;

if(p->rchild!=NULL)

queue[++rear]=p->rchild;

}

}

}//树的层次遍历

void preordertraverse(bitree bt){

if(bt!=NULL){

printf("%d\t",bt->date);

preordertraverse(bt->lchild);

preordertraverse(bt->rchild);

}

}//树的先序遍历

void inordertraverse(bitree bt){

if(bt!=NULL){

inordertraverse(bt->lchild);

printf("%d\t",bt->date);

inordertraverse(bt->rchild);

}

}//树的中序遍历

void postordertraverse(bitree bt){

if(bt!=NULL){

postordertraverse(bt->lchild);

postordertraverse(bt->rchild);

printf("%d\t",bt->date);

}

}//树的后序遍历

int bitreedepth(bitree bt){

int h,lh,rh;

if(bt==NULL)

h=0;

else{

lh=bitreedepth(bt->lchild);

rh=bitreedepth(bt->rchild);

if(lh>=rh)

h=lh+1;

else

h=rh+1;

}

return h;

}//求树的深度

int bitreeleaf(bitree bt){

int m=0;

if(!bt)

return 0;

else if(bt->lchild==NULL&&bt->rchild==NULL)

return 1;

m+=bitreeleaf(bt->lchild)+bitreeleaf(bt->rchild);

return m;

}//求树的叶子树

int countbitreenode(bitree bt){

if(!bt)

return 0;

else

return countbitreenode(bt->lchild)+countbitreenode(bt->rchild)+1;

}//求树的节点数

void OperateBitree(bitree bt){

printf("\n");

printf("The level traversal of the bitree is:\n\t");

leveltraverse(bt);

printf("\n\n");

printf("The preorder traversal of the bitree is:\n\t");

preordertraverse(bt);

printf("\n\n");

printf("The inorder traversal of the bitree is:\n\t");

inordertraverse(bt);

printf("\n\n");

printf("The postorder traversal of the bitree is:\n\t");

postordertraverse(bt);

printf("\n\n");

printf("The number of the bitreenode is %d.\n",countbitreenode(bt));

printf("The depth of the bitree is %d.\n",bitreedepth(bt));

printf("The number of the leaves of the bitree is %d.\n\n",bitreeleaf(bt));

}//树的基本操作

void main(){

bitree bt;

bt=createbitree(bt);

OperateBitree(bt);

}

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

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

相关文章

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成:实例和数据库 实例: 可理解为对象,看不见。数据库: 理解为类,看得见的,E:\app\Administrator\…

1.Dao代码如何编写?

Dao代码如何编写? 1、操作xml数据。数据保存在xml文件里。2、使用jdbc技术。2.1、原始的jdbc操作,connection,statement,resultset。2.2、自定义一个持久层的框架,封装通用的dao操作方法。2.3、DbUtils组件&#xff0c…

WEB前端面试题汇总整理01

1.JS找字符串中出现最多的字符 例如&#xff1a;求字符串nininihaoa中出现次数最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次数加1} else {o[char] 1;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…

用2468这四个数字c语言,C语言作业及参考答案.doc

C语言及实验作业参考做法分支程序设计上机作业&#xff1a;标题4.3三角形判断描述输入三条边的长&#xff0c;输出这三条边是否构成等边三角形、等腰三角形、直角三角形、普通三角形&#xff0c;还是不能构成三角形输入数据整数a,b,c的值输出数据等边三角形、等腰三角形、直角三…

C# WinForm开发系列 - GDI+【转】

http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum6&fps1 C# WinForm开发系列 - GDI Posted on 2009-07-19 15:23 peterzb 阅读(48850) 评论(17) 编辑 收藏 UI&#xff08;User Interface&#xff09;编程在整个项目开发过程中是个颇为重要的环节&…

2.ORM思想

一、ORM思想介绍 orm是一种思想&#xff0c;是dao层代码的一种编写思想。其中&#xff1a;o代表Object&#xff0c;java对象&#xff1b;r代表Relation&#xff0c;关系型数据库&#xff1b;m代表Map&#xff0c;java对象和关系型数据库表的映射关系。该思想主张&#xff1a;1、…

android 字体颜色选择,Android中颜色选择器和改变字体颜色的实例教程

易采站长站为您分析Android中颜色选择器和改变字体颜色的实例教程,其中改变字体颜色用到了ColorPicker颜色选择器,需要的朋友可以参考下1.构建一张七彩图:我们经常看到这种样子的颜色选择器吧..然后其实右边的亮度选择是:这样我们的代码就可以进行啦...// 创建七彩图片private …

3.hello hibernate

一、Hibernate的开发步骤 1、引入jar文件2、配置3、apihibernate的映射文件的配置是不容易的&#xff0c;是重点学习的地方。二、Hello Hibernate 1、数据库表准备 数据库名 &#xff1a;test表&#xff1a;DROP TABLE IF EXISTS users; CREATE TABLE users (id int(11) NOT N…

无法连接oralce问题(不断更新)

1、oracle自带的sqlplus能连接&#xff0c;但第三方工具如plsqldev不能连接 解决方法&#xff1a;1、确认listener.ora&#xff0c;tnsnames.ora配置文件中的host地址一致。且&#xff1a;listener.ora只能配置主机名。winr&#xff0c;cmd&#xff0c;hostname 获取主机名。2、…

新版vue-cli搭建多页面应用

2019独角兽企业重金招聘Python工程师标准>>> 折腾了好久&#xff0c;终于把坑踩完了&#xff0c;废话不多说&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推荐一下我另一篇博客&#xff0c;我觉得这篇好用&…

android开发方法数,Android减少App方法数

作为Android开发者我们都知道Android应用方法数65535这样一个限制&#xff0c;这是因为在Android系统中&#xff0c;方法的id使用short类型存储在Dex文件中&#xff0c;而short类型的取值范围是-32,768到32,767&#xff0c;因此导致Android应用方法数65535这样一个最大限制&…

内表,外表

一、内表 Internal Table 内表与结构体基本类似&#xff0c;它同样是程序运行中被临时创建的一个存储空间&#xff0c;它是一个可包含多条记录的数据表。 二、外表 外表(external table)就像普通的表对像一样&#xff0c;可以select等&#xff0c;只是它是只读的&#xff0c;数…

国外分享插件

<script type"text/javascript" src"//s7.addthis.com/js/300/addthis_widget.js#pubidra-59effacb0a4e93a8"></script> addthis转载于:https://www.cnblogs.com/ghfjj/p/8026946.html

android 方法超时,android socket.io中的发出或确认超时处理?

套接字发出超时确认我的AckWithTimeOut带有实现的自定义超时类Ack接口public class AckWithTimeOut implements Ack {private Timer timer;private long timeOut 0;private boolean called false;public AckWithTimeOut() {}public AckWithTimeOut(long timeout_after) {if (…

2017 Google 开发者大会直播入口

今年&#xff0c;Google 开发者大会再度来袭&#xff01;大会将于 12 月 13 日和 14 日在上海举办&#xff0c;主题涵盖机器学习 (Machine Learning)、Android、移动网络&#xff08;Mobile Web)、TensorFlow、Firebase、云服务 (Cloud)、AR/VR、设计 (Design) 以及更多开发者相…

Oracle sqlldr

一、sqlldr的概述 sqlldr是oracle自带的一个工具&#xff0c;用于导入文本文件的内容到oracle数据库中。 该工具在&#xff1a;\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe 二、使用 D:\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe useriduser/…

android实现推送方式解决方案,Android实现推送方式解决方案系列教程

Android实现推送方式解决方案系列教程 1-5Android实现推送方式解决方案系列教程总结者&#xff1a;难民 交流Q群: 137824028Android实现推送方式解决方案系列之一--XMPP协议出自&#xff1a;http://doc.docsou.com/thread-1004-1-1.htmlXMPP协议简介XMPP(Extensible Messageing…

日志组件slf4j介绍及配置详解

2019独角兽企业重金招聘Python工程师标准>>> 原文出自 1 基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的&#xff0c;而很多程序员也已经熟悉各种不同的日志库&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

网上文章很多&#xff0c;今天分别跑了一张2000多万行的表&#xff0c;该表没有主键&#xff0c;索引&#xff0c;约束条件。 结果是&#xff0c;效率差不多