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

學無先后,達者為師

網站首頁 編程語言 正文

統計C語言二叉樹中葉子結點個數_C 語言

作者:MyDreamingCode ? 更新時間: 2022-04-16 編程語言

樹是一種非線性的數據結構,它是由n(n>=0)個有限結點組成一個具有層次關系的集合。把它叫做樹是因
為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的,下面我們就用簡單小栗子來簡單說明關于統計C語言二叉樹中葉子結點個數的方法吧

簡單小栗子:

#include<stdio.h>
#include<stdlib.h>
?
typedef char ElemType;
typedef struct BTNode
{
?? ?ElemType data;
?? ?struct BTNode *left;
?? ?struct BTNode *right;
}BTNode,*BiTree;
?
//創建二叉樹
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);
?? ?}
}
?
//先序遍歷二叉樹
void printDLR(BiTree BT)
{
?? ?if(BT)
?? ?{
?? ??? ?printf("%c ",BT->data);
?? ??? ?printDLR(BT->left);
?? ??? ?printDLR(BT->right);
?? ?}
}
?
//統計二叉樹結點個數
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("二叉樹結點的個數:%d\n",count);
}

按照先序遍歷的方式來輸入二叉樹結點,若孩子結點為空,則輸入空格。

輸入:

ABD ?E ?CF

返回結果:

先序遍歷:A B D E C F

二叉樹結點的個數:3

葉子結點分別是:D、E、F

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

欄目分類
最近更新