Skip to content

Instantly share code, notes, and snippets.

@yxjxx
Created January 20, 2015 13:23
Show Gist options
  • Save yxjxx/e0c0dd93377cd8d8dd83 to your computer and use it in GitHub Desktop.
Save yxjxx/e0c0dd93377cd8d8dd83 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <iomanip>
using namespace std;
typedef struct BTNode{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode, *BinTree;
void CreateBinTree(BinTree &T){
T->data = 'a';
T->lchild = NULL;
T->rchild = NULL;
T->lchild = (BTNode *) malloc(sizeof(BTNode));
T->lchild->data = 'b';
T->lchild->lchild = NULL;
T->lchild->rchild = NULL;
T->rchild = (BTNode *) malloc(sizeof(BTNode));
T->rchild->data = 'c';
T->rchild->lchild = NULL;
T->rchild->rchild = NULL;
T->lchild->lchild = (BTNode *) malloc(sizeof(BTNode));
T->lchild->lchild->data = 'd';
T->lchild->lchild->lchild = NULL;
T->lchild->lchild->rchild = NULL;
T->lchild->rchild = (BTNode *) malloc(sizeof(BTNode));
T->lchild->rchild->data = 'e';
T->lchild->rchild->lchild = NULL;
T->lchild->rchild->rchild = NULL;
T->rchild->lchild = (BTNode *) malloc(sizeof(BTNode));
T->rchild->lchild->data = 'f';
T->rchild->lchild->lchild = NULL;
T->rchild->lchild->rchild = NULL;
T->rchild->rchild = (BTNode *) malloc(sizeof(BTNode));
T->rchild->rchild->data = 'g';
T->rchild->rchild->lchild = NULL;
T->rchild->rchild->rchild = NULL;
//新建节点之后要把指针域赋NULL
}
int calc_leaf_num(BinTree T){
if(T->lchild != NULL && T->rchild != NULL){
return calc_leaf_num(T->lchild)+ calc_leaf_num(T->rchild);
}
if(T->lchild != NULL && T->rchild == NULL){
return calc_leaf_num(T->lchild);
}
if(T->lchild == NULL && T->rchild != NULL){
return calc_leaf_num(T->rchild);
}
if(T->lchild == NULL && T->rchild == NULL){
return 1;
}
}
int main()
{
BinTree T = (BTNode *) malloc(sizeof(BTNode));
CreateBinTree(T);
cout << calc_leaf_num(T);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment