递归 求二叉树节点个数 求叶子节点个数 求第k层的节点个数

本文二叉树模型:

详情可见博主前文:递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客 

一:求二叉树节点的个数

解释:

1:递归的大事化小思路即:

求节点总数=左子树+右子树+1,子树又可以当作新的一颗二叉树,再= 左子树+右子树+1

所以情况如下:

a:一个节点是空,则计数0

b:一个节点不是空,则1+它的左右子树的节点个数

2:递归终止的条件,就是节点为空,可能是一开始就为空,也有可能是到叶子节点的孩子为空

3:三目操作符 : a?b:c  a为真执行b,否则执行c

二:求叶子节点个数

解释:

1:递归的大事化小思路即:

叶子结点总数= 左子树的叶子节点+右子树的叶子节点

所以情况如下

a:一个节点是空返回0

b:一个节点不是空,但不是叶子节点,则向下递进

c:一个节点不是空,且是叶子节点,返回1,然后再向下递进。

如何判断是叶子节点?->本身不为空且左右孩子都为空,也就是前两个if都通过。

三:第k层的节点个数

解释:

1:递归的大事化小思路即:

当前树的第 K 层 = 左子树的第K-1层 + 右子树的第K-1层

也就是说:求第3层=求左子树的第2层+右子树的第2层

所以:我们要递进到第K层(k=1的时候,即到达了第K层),对每个节点判断,空则返回0,不为空且K=1则返回1,而且K一定为1,因为已经到了第K层。

 

 2: 所以情况如下

a:节点为空,返回0

b:节点不为空,k不为1,向下递进

c:节点不为空,k为1,则返回1

也就是说:我们最后到底第k层的时候,也就是if中的K=1的时候,会对该k层的3(2的左子树) NULL(2的右子树) 5(4的左子树)6(4的右子树) 进行判断,空就是0,非空且k=1为1,而且K一定为1,因为已经到了第K层。

 

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值