计算二叉树叶子节点及节点数量

void cc(TNode *t,int &n){  //计算节点数量 
    if(t!=NULL){
        n++;
        cc(t->lchild,n);
        cc(t->rchild,n);
    }
}

void leaf(TNode *t,int &n){   //叶子计算
    if(t!=NULL){
        if(t->lchild==NULL && t->rchild==NULL) n++;
        leaf(t->lchild,n);
        leaf(t->rchild,n);
    }
}

说明:在二叉树的递归遍历中,每个节点会且只会被访问一次。在执行完当前的函数后,会返回上一层函数继续执行未执行完的函数语句。也就是说,最先执行完整个函数的语句的是递归的最后一层。

调用:

int n=0;

leaf(t,n);

cc(t,n);

posted @ 2020-11-25 19:29  封不烦  阅读(809)  评论(0编辑  收藏  举报