码迷,mamicode.com
首页 > 其他好文 > 详细

六:二叉树中第k层节点个数与二叉树叶子节点个数

时间:2015-07-08 00:36:06      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:二叉树中第k层节点个数   二叉树叶子节点个数   第k层节点个数   叶子节点个数   

二叉树中第k层节点个数


递归解法:

(1)如果二叉树为空或者k<1返回0

(2)如果二叉树不为空并且k==1,返回1

(3)如果二叉树不为空且k>1,返回左子树中k-1层的节点个数与右子树k-1层节点个数之和


代码如下:

int GetNodeNumKthLevel(BinaryTreeNode *pRoot, int k) 

   if(pRoot == NULL || k < 1) 

       return 0; 

   if(k == 1) 

       return 1; 


   int numLeft = GetNodeNumKthLevel(pRoot->m_pLeft, k-1); // 左子树中k-1层的节点个数 

   int numRight = GetNodeNumKthLevel(pRoot->m_pRight, k-1); // 右子树中k-1层的节点个数 

   return (numLeft + numRight); 

}


二叉树叶子节点个数


递归方式

1)如果给定节点pRoot为NULL,则是空树,叶子节点为0,返回0;

2)如果给定节点pRoot左右子树均为NULL,则是叶子节点,且叶子节点数为1,返回1;

3)如果给定节点pRoot左右子树不都为NULL,则不是叶子节点,以pRoot为根节点的子树叶子节点数=pRoot左子树叶子节点数+pRoot右子树叶子节点数

 

代码如下

int  GetLeafNum(BinaryTreeNode *pRoot)

{

    if( pRoot ==NULL )

        return0;

    if(pRoot->m_pLeft == NULL && pRoot->m_pRight == NULL )

        return1;

 

    return (GetLeafNum( pRoot->m_pLeft) + GetLeafNum ( pRoot->m_pRight) );

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

六:二叉树中第k层节点个数与二叉树叶子节点个数

标签:二叉树中第k层节点个数   二叉树叶子节点个数   第k层节点个数   叶子节点个数   

原文地址:http://blog.csdn.net/day__day__up/article/details/46795655

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