#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 遍歷根...