博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
六:二叉树中第k层节点个数与二叉树叶子节点个数
阅读量:6693 次
发布时间:2019-06-25

本文共 848 字,大约阅读时间需要 2 分钟。

二叉树中第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) );

}

非递归方式:

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

转载地址:http://khcoo.baihongyu.com/

你可能感兴趣的文章
Ext右键菜单完整版
查看>>
2012年1月凯立德地图普高清全分辨率懒人包P1750-D5616-2721J09(完美破解,已上路实测,永久下载地址)...
查看>>
SwipeBackActivity 的使用
查看>>
不停止MySQL服务增加从库的两种方式
查看>>
点击div折叠
查看>>
Sqli-LABS通关笔录-2
查看>>
hessian 在spring中的使用 (bean 如 Dao无法注入的问题)
查看>>
ccbpm工作流引擎是怎样支持多种流程模式的
查看>>
Unity打包android的apk与数据包.obb分离和apk签名
查看>>
hive 运行sqlclient异常
查看>>
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 解决办法
查看>>
maven中pom文件配置解决资源文件的编码问题
查看>>
Generative Adversarial Nets[LSGAN]
查看>>
Apache Nifi在Windows环境下搭建伪群集及证书登录
查看>>
socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么?
查看>>
MySql 常用命令总结
查看>>
Protocol Buffers简明教程
查看>>
(原創) 如何列出一篇文章的所有單字並依size和字母順序排序? (初級) (C++)
查看>>
喝酒喝出的计算机文化
查看>>
PyQt的QString 和 QStringList
查看>>