求二叉树叶子结点的个数
输入输入串中圆点表示某个结点的孩子指针为空,例如:AB.D..C.. ,这表示结点B没有左孩子,结点D没有左、右孩子,结点C没有左、右孩子。
输出二叉树上叶子结点的个数。
输入样例 1ABD..E.G..C.FH..I..输出样例 1
4C代码:
#include#include typedef char ElemType; typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; int ans = 0; BiTree CreateBiTree()//建立二叉树 { ElemType x; BiTree T; scanf("%c",&x); if(x=='.') //当输入‘.’时表示子树为空 T=NULL; else { T=(BiTree)malloc(sizeof(BiTNode)); T->data=x; T->lchild=CreateBiTree(); T->rchild=CreateBiTree(); } return T; } void Leaf(BiTree T)//后序遍历统计叶子节点数目 { if(T!=NULL) { Leaf(T->lchild); Leaf(T->rchild); if(T->lchild==NULL&&T->rchild==NULL) ans++; } } int main() { BiTree root = CreateBiTree(); Leaf(root); printf("%dn",ans); return 0; }



