樹的基本操作代碼 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.pswp.cn/news/539880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539880.shtml
英文地址,請注明出處:http://en.pswp.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;效率差不多