日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

統(tǒng)計(jì)C語(yǔ)言二叉樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)_C 語(yǔ)言

作者:MyDreamingCode ? 更新時(shí)間: 2022-04-16 編程語(yǔ)言

樹(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

原文鏈接:https://blog.csdn.net/qq_61706112/article/details/121360386

欄目分類(lèi)
最近更新