編寫遞迴演算法 計算二叉樹中葉子節點的個數

2021-06-02 08:04:09 字數 949 閱讀 1841

#include

struct bitree{

char data;

struct bitree *lchild;

struct bitree *rchild;

struct bitree* creatbitree(){

char x;

struct bitree* p;

scanf("%c",&x); 

if(x!='.'){

p=(struct bitree*)malloc(sizeof(struct bitree));

p->data=x;

p->lchild=creatbitree();

p->rchild=creatbitree();

else

p=null;

return p;

int leafnum(struct bitree *t){

if(!t)

return 0;

else

if(!t->lchild&&!t->rchild)

return 1;

else

return leafnum(t->lchild)+leafnum(t->rchild);

int main(){

int num;

struct bitree* t;

printf("please input the tree(pre):\n");

t=creatbitree();

while(t==null){

printf("empoty,again:\n");

t=creatbitree();                                 

num=leafnum(t);

printf("\nthe sum of leaf is:%d\n",num);

getch();

編寫遞迴演算法,計算二叉樹中葉子結點的數目

編寫遞迴演算法,計算二叉樹中葉子結點的數目 includeusing namespace std typedef struct tnode 二叉樹結構 bitree void createbitree bitree t 先序遍歷方式建立二叉樹 輸入.代表該結點為空 else t null int c...

二叉樹非遞迴演算法

程式小白,希望和大家多交流,共同學習 非遞迴二叉樹借用棧 使用鏈棧,使用它的原因 1.需要使用先進後出的儲存結構 2.需要儲存資料個數不定 三種遍歷儲存的雖然都是相同的資料型別,但是使用的目的不一樣,所以使用的位置不一樣 先序遍歷 根據給定的根節點,直接訪問根節點 左結點,有左孩子的結點有兩重身份 ...

二叉樹的遞迴演算法

二叉樹是一種特殊的資料結構,有乙個根節點,根節點下面有一左一右兩個子節點,每個子節點又有各自的子節點,層層深入成樹狀。關於二叉樹的遍歷我只學習了遞迴遍歷,非遞迴遍歷比較複雜還是很理解。遞迴遍歷分為先序,中序和後序。用三個字母表示遞迴遍歷可以很好理解 d 訪問根節點,l 遍歷根節點的左子樹,r 遍歷根...