树——统计完全二叉树的节点数目
来源:互联网 发布:牛客网面试算法精品课 编辑:程序博客网 时间:2024/04/24 14:43
题目要求
实现时间复杂度低于O(N)的解法。
遍历整棵树求节点个数时间复杂度为O(N)。
这里利用了完全二叉树的性质:通过比较左右子树的最左结点的高度来看哪边是满的,然后递归计算。
1.首先遍历左子树最左节点找到二叉树的层数h(头节点在第1层);
2.变脸右子树最左节点看时候在第h层,若在第h层,说明左子树该完全二叉树左子树是满的;否则其右子树是满的,不过叶子节点都在第h-1层;
3.递归计算。
//计算左子树最左节点的层数public int mostLeftLevel(TreeNode root){if(root == null)return 0;return mostLeftLevel(root.left)+1;}//递归计算完全二叉树节点个数public int countNodes(TreeNode root){if(root == null)return 0;int left=mostLeftLevel(root.left);int right=mostLeftLevel(root.right);if(left == right)//左子树是满的return (1<<left)+countNodes(root.right);else //right < left 右子树是满的,且层数少一层return (1<<right)+countNodes(root.left);}
0 0
- 树——统计完全二叉树的节点数目
- 统计完全二叉树的节点数
- 统计完全二叉树的节点数
- 统计二叉树中叶子节点的数目
- 二分搜索—— 完全二叉树统计节点个数
- 二叉树问题---统计完全二叉树的节点个数
- [各种面试题] 完全二叉树节点个数的统计
- 求二叉树的叶子节点数目
- 计算一棵完全二叉树上节点的数目
- 二叉树叶子节点的数目&二叉树第k层节点的数目&二叉树第k层叶子节点的数目
- 完全二叉树统计节点个数【使用二分搜索】
- n个节点的二叉树的数目
- 二叉树统计节点
- 计算二叉树中叶子节点的数目
- Count Complete Tree Nodes 统计完全二叉树的节点数
- Tree-----222. Count Complete Tree Nodes(统计完全二叉树的节点个数)
- 二叉树节点及树叶数目
- 完全二叉树的节点个数
- SCU2016-06 P题 python处理字符串
- 交叉编译器的制作
- POJ3264 Balanced Lineup(RMQ)
- 关于面试中的一二 ------------应用程序 持续更新
- hdoj-1871-无题
- 树——统计完全二叉树的节点数目
- 递归函数时间复杂度分析
- javaEE web 基础性的工程建设
- 菜鸟级三层框架(EF+MVC)项目实战之 系列二 对数据访问层的抽象下
- tensorboard的使用
- 菜鸟级三层框架(EF+MVC)项目实战之 系列三 业务逻辑层封装
- UDP打洞原理及软件简单实现
- hdoj-1029-Ignatius and the Princess IV
- 欢迎使用CSDN-markdown编辑器