考研数据结构(每日一题)
题目:假设二叉树采用二叉链表存储结构存储,试设计一个算法,计算一棵给定二叉树的所有双分支(度为2)结点个数。
算法思想:
用递归,设置递归函数模型f(b):
f(b)=0 为空结点
f(b)=f(b->lchild)+f(b->rchild)+1 是双分支结点,+1是本身
f(b)=f(b->lchild)+f(b->rchild) 不是双分支结点
完整代码:
int DoubleNodes(BiTree b){
if(b == NULL){
return 0;
}else if(b -> lchild != NULL && b-> rchild != NULL){
return DoubleNodes(b -> lchild) + DoubleNodes(b -> rchild) + 1;
}else{
return DoubleNodes(b -> lchild) + DoubleNodes(b -> rchild);
}
}