java 获取叶子节点个数_数据结构编程: 统计二叉树中叶子结点的个数。

本文介绍了如何使用递归前序遍历和层次遍历两种方法来统计二叉树中叶子节点的个数。通过遍历二叉树,判断每个节点的左右子节点是否为空,从而确定叶子节点。示例代码提供了具体的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

展开全部

叶子节点:没有孩子节点的节点

也就是说,当我们明白了叶子节点的定义62616964757a686964616fe59b9ee7ad9431333363376531后,只需要遍历一遍二叉树,把符合这种条件(左孩子节点和右孩子节点都为NULL的节点)的节点统计出来就可以了。

于是,实际上这个问题也就转化成了如何遍历二叉树?很显然,遍历二叉树是可以有多种方式的,如:前序遍历(递归/非递归)、中序遍历(递归/非递归)、后序遍历(递归/非递归)、层次遍历等等。

下面我将给出使用递归前序遍历以及层次遍历两种思路实现的求解叶子节点的示例代码吧,仅供参考。其他几种实现方式思路类似,可自行尝试。示例代码如下:package cn.zifangsky.tree.questions;

import org.junit.Test;

import cn.zifangsky.queue.LinkQueue;

import cn.zifangsky.tree.BinaryTreeNode;

/**

* 求二叉树中叶子节点的个数

* @author Administrator

*

*/

public class Question2 {

/**

* 通过递归前序遍历获取叶子节点个数

* @param root

* @return

*/

public int getNumberOfLeavesByPreOrder(BinaryTreeNode root){

if(root == null){

return 0;

}else{

if(root.getLeft() == null && root.getRight() == null){ //叶子节点

return 1;

}else{

return getNumberOfLeavesByPreOrder(root.getLeft()) + getNumberOfLeavesByPreOrder(root.getRight());

}

}

}

/**

* 使用层次遍历获取二叉树叶子节点个数

*

* @时间复杂度 O(n)

* @param root

*/

public int getNumberOfLeavesByQueue(BinaryTreeNode root){

int count = 0; //叶子节点总数

LinkQueue queue = new LinkQueue<>();

if(root != null){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值