二叉树——5.完全二叉树的节点数

力扣题目链接

给出一个完全二叉树,求出该树的节点个数。

示例:

输入:root = [1,2,3,4,5,6]
输出:6

题干很简单,求出给的完全二叉树的节点个数。什么是完全二叉树?很简单,但凡一个节点存在子节点,那左节点必须存在,这样的树才能称为完全二叉树。

有些人一看示例root = [1,2,3,4,5,6],就想求节点数,那我之间求这个数组长度不就行了么?不行,在实际编程面试或某些算法场景中,二叉树通常以链表节点的形式提供,而不是以数组形式。链表节点结构更接近真实世界的树结构,因为它们可以轻松处理不完整的树和更复杂的操作(例如插入和删除节点)。

完整代码如下:

class Solution:
    def countNodes(self, root: TreeNode) -> int:
        return self.getNodesNum(root)
        
    def getNodesNum(self, cur):
        if not cur:
            return 0
        leftNum = self.getNodesNum(cur.left) #左
        rightNum = self.getNodesNum(cur.right) #右
        treeNum = leftNum + rightNum + 1 #中
        return treeNum

        if not cur:
            return 0

递归终止条件: 如果cur为空(即当前节点不存在),返回 0,表示没有节点。

        leftNum = self.getNodesNum(cur.left) #左
        rightNum = self.getNodesNum(cur.right) #右
        treeNum = leftNum + rightNum + 1 #中

左子树节点数量计算: 递归调用getNodesNum(cur.left),计算左子树的节点数量,结果存储在leftNum 中。

右子树节点数量计算: 递归调用 getNodesNum(cur.right),计算右子树的节点数量,结果存储在 rightNum 中。

总节点数计算: 左子树节点数 + 右子树节点数 + 当前节点本身(1),存储在treeNum中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值