網(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
相關(guān)推薦
- 2023-01-02 Android?數(shù)據(jù)結(jié)構(gòu)全面總結(jié)分析_Android
- 2022-09-12 docker?清理緩存腳本解析_docker
- 2022-07-06 pyinstaller?pathex參數(shù)引發(fā)打包no?module?name異常_python
- 2022-09-23 基于numpy實(shí)現(xiàn)邏輯回歸_python
- 2022-06-06 typescript中abstractClass(抽象類(lèi))、extends、abstract
- 2022-04-22 Mac環(huán)境下使用CLion調(diào)試redis 6.X源碼
- 2023-09-12 Spring Boot自動(dòng)配置介紹
- 2022-11-22 新建的React?Native就遇到vscode報(bào)警解除方法_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支