222. 完全二叉树的节点个数(简单)

文章介绍了如何使用递归和队列迭代两种方法解决LeetCode上的问题,即计算给定完全二叉树的节点总数。作者提供了两种Python实现方式,包括对根节点的左右子树进行遍历计数。
摘要由CSDN通过智能技术生成

https://leetcode.cn/problems/count-complete-tree-nodes/
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

示例 1:
在这里插入图片描述
输入:root = [1,2,3,4,5,6]
输出:6

class Solution:
    def countNodes(self, root: Optional[TreeNode]) -> int:
        # 递归法
        if not root:
            return 0
        left = self.countNodes(root.left)
        right = self.countNodes(root.right)
        return 1 + left + right

        # 队列迭代法
        # from collections import deque
        # q = deque()
        # if not root:
        #     return 0
        # q.append(root)
        # result = 0
        # while q:
        #     n = len(q)
        #     for i in range(n):
        #         node = q.popleft()
        #         result += 1  # 记录节点数量
        #         if node.left:
        #             q.append(node.left)
        #         if node.right:
        #             q.append(node.right)
        # return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值