zoukankan      html  css  js  c++  java
  • 六:二叉树中第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) );

    }


    非递归方式:

    用非递归便利的方式遍历二叉树。便利的同一时候。推断当前节点是否为叶子节点,假设是,计数器计数。

  • 相关阅读:
    dedecms代码研究五
    dedecms代码研究四
    判断有没有真正点击打印
    SAP中删除假脱机请求
    商品扩地点不成功
    记录一些使用的abap小程序帮助开发
    sap abap 程序 中使用 FTP . <转载>
    SM37 后台调试
    ftp上传下载| 图片上传下载
    ALV调用的几个标准函数 <转自 思微随想>
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6887983.html
Copyright © 2011-2022 走看看