码迷,mamicode.com
首页 > 编程语言 > 详细

二叉树的相关算法(一)

时间:2018-09-02 18:38:17      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:span   void   节点   最小值   afn   子节点   div   sum   树节点   

1.求二叉树所有的节点数

2.求二叉树所有的叶子节点数

3.求二叉树最小值的节点值

4.求二叉树所有节点值之和

5.求二叉树节点值为x的个数

6.删除二叉树

//求二叉树所有的节点数
int nodes(BTNode *r){
    if(r==0)
        return 0;
    else
        return nodes(r->lchild)+nodes(r->rchild)+1;
} 

//求二叉树所有的叶子节点数
int leafNodes(BTNode *r){
    if(r==NULL)
        return 0;
    else if(r->lchild==NULL&&r->rchild==NULL)
        return 1;
    else
        return leafNodes(r->lchild)+leafNodes(r->rchild);
} 

//求二叉树最小值的节点值
void minNode(BTNode *r,elemType &min){
    if(r!=NULL){
        if(r->data<min)
            min=r->data;
        minNode(r->lchild,min);
        minNode(r->rchild,min);
    }
    
} 

//求所有节点值之和
int findSum(BTNode *r){
    if(r==NULL)
        return 0;
    else
        return r->data+findSum(r->lchild)+findSum(r->rchild);
} 

//求二叉树中节点值为x的节点个数
int findCount(BTNode *r,int x){
    if(r==NULL)
        return 0;
    if(x==r->data)
        return 1+findCount(r->lchild,x)+findCount(r->rchild,x);
    else
        return findCount(r->lchild,x)+findCount(r->rchild,x);    
    
} 

//删除二叉树
void delTree(BTNode *r){
    if(r!=NULL){
        delTree(r->lchild);
        delTree(r->rchild);
        free(r);
    }
} 

 

二叉树的相关算法(一)

标签:span   void   节点   最小值   afn   子节点   div   sum   树节点   

原文地址:https://www.cnblogs.com/hekuiFlye/p/9574361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!