統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)
樹(shù)是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個(gè)有限結(jié)點(diǎn)組成一個(gè)具有層次關(guān)系的集合。把它叫做樹(shù)是因
為它看起來(lái)像一棵倒掛的樹(shù),也就是說(shuō)它是根朝上,而葉朝下的,下面我們就用簡(jiǎn)單小栗子來(lái)簡(jiǎn)單說(shuō)明關(guān)于統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)的方法吧
簡(jiǎn)單小栗子:
#include<stdio.h>
#include<stdlib.h>
?
typedef char ElemType;
typedef struct BTNode
{
?? ?ElemType data;
?? ?struct BTNode *left;
?? ?struct BTNode *right;
}BTNode,*BiTree;
?
//創(chuàng)建二叉樹(shù)
void createBTNode(BiTree &BT)
{
?? ?ElemType ch;
?? ?scanf("%c",&ch);
?? ?if(ch==' ')
?? ??? ?BT=NULL;
?? ?else
?? ?{
?? ??? ?BT = (BTNode*)malloc(sizeof(BTNode));
?? ??? ?BT->data= ch;
?? ??? ?createBTNode(BT->left);
?? ??? ?createBTNode(BT->right);
?? ?}
}
?
//先序遍歷二叉樹(shù)
void printDLR(BiTree BT)
{
?? ?if(BT)
?? ?{
?? ??? ?printf("%c ",BT->data);
?? ??? ?printDLR(BT->left);
?? ??? ?printDLR(BT->right);
?? ?}
}
?
//統(tǒng)計(jì)二叉樹(shù)結(jié)點(diǎn)個(gè)數(shù)
void countLeaves(BiTree BT,int &count)
{
?? ?if(BT)
?? ?{
?? ??? ?if(BT->left==NULL && BT->right==NULL)
?? ??? ?count++;
?? ??? ?else{
?? ??? ??? ?countLeaves(BT->left,count);
?? ??? ??? ?countLeaves(BT->right,count);
?? ??? ?}
?? ?}
}
?
void main()
{
?? ?BTNode *BT;
?? ?int count=0;
?? ?createBTNode(BT);
?? ?printf("先序遍歷:");
?? ?printDLR(BT);
?? ?printf("\n");
?? ?countLeaves(BT,count);
?? ?printf("二叉樹(shù)結(jié)點(diǎn)的個(gè)數(shù):%d\n",count);
}按照先序遍歷的方式來(lái)輸入二叉樹(shù)結(jié)點(diǎn),若孩子結(jié)點(diǎn)為空,則輸入空格。
輸入:
ABD E CF
返回結(jié)果:
先序遍歷:
A B D E C F二叉樹(shù)結(jié)點(diǎn)的個(gè)數(shù):
3葉子結(jié)點(diǎn)分別是:
D、E、F
到此這篇關(guān)于統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)的文章就介紹到這了,更多相關(guān)統(tǒng)計(jì)二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹(shù)的遍歷
- C語(yǔ)言實(shí)現(xiàn)線索二叉樹(shù)的前中后創(chuàng)建和遍歷詳解
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉鏈表創(chuàng)建二叉樹(shù)
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)先序、中序、后序及層次四種遍歷
- C語(yǔ)言中二叉樹(shù)的后序遍歷詳解
- C語(yǔ)言實(shí)現(xiàn)二叉樹(shù)層次遍歷介紹
- C語(yǔ)言二叉樹(shù)的遍歷示例介紹
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹(shù)的概念及滿二叉樹(shù)與完全二叉樹(shù)
相關(guān)文章
C++?Boost?Accumulators累加器詳細(xì)講解
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱2022-11-11
C++ float、double判斷是否等于0問(wèn)題
這篇文章主要介紹了C++ float、double判斷是否等于0問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
使用Visual Studio 2010/2013編譯V8引擎步驟分享
這篇文章主要介紹了使用Visual Studio 2013編譯V8引擎步驟分享,需要的朋友可以參考下2015-08-08
實(shí)例講解C++編程中對(duì)設(shè)計(jì)模式中的原型模式的使用
這篇文章主要介紹了C++編程中對(duì)設(shè)計(jì)模式中的原型模式的使用實(shí)例,包括原型模式中對(duì)C++的深拷貝和淺拷貝的處理,需要的朋友可以參考下2016-03-03
基于C語(yǔ)言實(shí)現(xiàn)shell指令的詳解
本篇文章是對(duì)C語(yǔ)言實(shí)現(xiàn)shell指令的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語(yǔ)言經(jīng)典例程100例(經(jīng)典c程序100例)
這篇文章主要介紹了C語(yǔ)言經(jīng)典例程100例,經(jīng)典c程序100例,學(xué)習(xí)c語(yǔ)言的朋友可以參考一下2018-03-03

