Leetcode-222题:Count Complete Tree Nodes

题目:Given a complete binary tree, count the number of nodes.

Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.

思路:如果知道一个子树是完全二叉树,并且其深度为h,那么这棵子树所包含的节点个数便为2^h-1。否则便需递归求其左右子树的节点个数。

代码:

def getHightRight(self, root):
    if root == None:
        return 0
    high = 0
    while root != None:
        high += 1
        root = root.right
    return high

def getHightLeft(self, root):
    if root == None:
        return 0
    high = 0
    while root != None:
        high += 1
        root = root.left
    return high

def countNodes(self, root):
    """
    :type root: TreeNode
    :rtype: int
    """
    if root == None:
        return 0
    l_high = self.getHightLeft(root.left)
    r_high = self.getHightRight(root.right)
    if l_high == r_high:
        return 2**(l_high+1)-1
    else:
        return self.countNodes(root.left)+self.countNodes(root.right)+1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 旅行 爱上一个人就像一场旅行 没有目的地 望不到终点 也没有起点 不知不觉就爱上了 而爱上谁 更不是自己能控制 就...
    日日晿阅读 162评论 0 1
  • 每次提笔开始写我都告诉自己一声,要自由的写作,不要条条框框,这样文章才耐读。 一下车走进家门,看见钦钦抱着小孩(我...
    谁的孤独是一颗眼泪阅读 383评论 0 1
  • 学插花,买花就来莎莎。 莎莎花艺专业花艺培训,插花培训。花店连锁经营鲜花全国配送,专业礼仪婚庆策划,婚礼培训机构。...
    天元莎莎花艺阅读 178评论 0 0