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


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);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM