1. 程式人生 > >資料結構作業11—二叉樹(函式題)

資料結構作業11—二叉樹(函式題)

6-2 二叉樹求結點數 (15 分)

編寫函式計算二叉樹中的節點個數。二叉樹採用二叉連結串列儲存結構。

函式介面定義:

int NodeCountOfBiTree ( BiTree T);

其中 T是二叉樹根節點的地址。

裁判測試程式樣例:

//標頭檔案包含
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>

//函式狀態碼定義
#define TRUE       1
#define FALSE      0
#define OK         1
#define
ERROR 0
#define OVERFLOW -1 #define INFEASIBLE -2 typedef int Status; //二叉連結串列儲存結構定義 typedef int TElemType; typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; //先序建立二叉樹各結點,輸入0代表建立空樹。 Status CreateBiTree(BiTree &T){ TElemType e; scanf
("%d",&e); if(e==0)T=NULL; else{ T=(BiTree)malloc(sizeof(BiTNode)); if(!T)exit(OVERFLOW); T->data=e; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return OK; } //下面是需要實現的函式的宣告 int NodeCountOfBiTree ( BiTree T); //下面是主函式 int main() { BiTree T; int
n; CreateBiTree(T); //先序遞迴建立二叉樹 n= NodeCountOfBiTree(T); printf("%d",n); return 0; } /* 請在這裡填寫答案 */

輸入樣例(注意輸入0代表空子樹):

1 3 0 0 5 3 0 0 0

輸出樣例:

4

int NodeCountOfBiTree ( BiTree T)
{
    if(!T)
        return 0;
    else
        return NodeCountOfBiTree(T->lchild)+NodeCountOfBiTree(T->rchild)+1;  //+根節點
}
/*       [1]
        /   \
       /     \
     [3]     [5]
            /
           /
         [3]      */