
222 完全二叉树的节点个数(递归)
发布日期:2021-05-07 21:53:42
浏览次数:13
分类:技术文章
本文共 938 字,大约阅读时间需要 3 分钟。
1. 问题描述:
给出一个完全二叉树,求出该树的节点个数。
说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点示例:
输入:
1 / \ 2 3 / \ / 4 5 6输出: 6
2. 思路分析:
计算二叉树的节点的数目,可以直接写一个递归的方法进行计算,因为要求返回值,所以可以写一个有返回值的递归进行求解,我们可以计算出左右子树节点的数目然后加上1表示当前节点的子树的数目,然后将其返回即可,对于每一个节点都是这样进行操作,所以最终会返回整棵树的节点的数目
3. 代码如下:
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: def dfs(self, root: TreeNode): if root is None: return 0 # 递归左右子树加上根节点的数目 return 1 + self.dfs(root.left) + self.dfs(root.right) def countNodes(self, root: TreeNode) -> int: return self.dfs(root)if __name__ == '__main__': root = TreeNode(1) l = TreeNode(2) r = TreeNode(3) ll = TreeNode(4) lr = TreeNode(5) rl = TreeNode(6) root.left = l root.right = r l.left = ll l.right = lr r.left = rl print(Solution().countNodes(root))
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月12日 21时37分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue Element UI Upload 上传多张图片
2019-03-04
JS数据类型的判断
2019-03-04
实现一个简易Vue(三)Compiler
2019-03-04
仿小米商城(上)
2019-03-04
仿小米商城(下)
2019-03-04
【30】kotlin 闭包
2019-03-04
文件md5怎么会变化
2019-03-04
好玩的editText
2019-03-04
自动安装服务2
2019-03-04
android 用action拦截打电话界面
2019-03-04
2019年一个程序员的回顾与成长计划
2019-03-04
vue if else用法。
2019-03-04
vue 官方实例教程 markdown demo
2019-03-04
vue-router 缓存路由组件对象
2019-03-04
js的各种数据类型判断(in、hasOwnProperty)
2019-03-04
严格模式、混杂模式与怪异模式
2019-03-04
一篇文章带你搞定 Java 中字符流的基本操作(Write / Read)
2019-03-04