题目:
设二叉树中每个结点存放单个字符,其结点类型如下:
typedef struct node
{ char data;
struct node *lchild,*rchild;
} BTNode;
设计一个算法求其中单分支的结点个数。
分析:这里可以采用递归的方法来查找,每查找成功一次就+1
代码:
int singleodes(BTNode *b)
{ if (b==NULL) return 0;
if ((b->lchild==NULL && b->rchild!=NULL) || //单分支的结点
(b->lchild!=NULL && b->rchild==NULL)
return singleodes(b->lchild)+ singleodes(b->rchild)+1;
else
return singleodes(b->lchild)+ singleodes(b->rchild);
)