Count Complete Tree Nodes
来源:互联网 发布:网络许可 编辑:程序博客网 时间:2024/05/22 14:42
题目:
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.
http://www.programcreek.com/2014/06/leetcode-count-complete-tree-nodes-java/
Steps to solve this problem:
1) get the height of left-most part
2) get the height of right-most part
3) when they are equal, the # of nodes = 2^h -1
4) when they are not equal, recursively get # of nodes from left&right sub-trees
Time complexity is O(h^2).
参考代码如下:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int countNodes(TreeNode root) { if(root==null) return 0; int left = getLeftHeight(root)+1; int right = getRightHeight(root)+1; if(left==right){ return (2<<(left-1))-1; }else{ return countNodes(root.left)+countNodes(root.right)+1; } } public int getLeftHeight(TreeNode n){ if(n==null) return 0; int height=0; while(n.left!=null){ height++; n = n.left; } return height; } public int getRightHeight(TreeNode n){ if(n==null) return 0; int height=0; while(n.right!=null){ height++; n = n.right; } return height; }}
0 0
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes(****)
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- Count Complete Tree Nodes
- iOS之UI随笔-字典转模型以及双模型的构建
- HDU 5468 Puzzled Elena(容斥原理+dfs)
- linux 内存操作
- hdoj 3468 Treasure Hunting 【BFS找所有最短路径上的点 + 最大流】
- GOF 23 设计模式之 责任链模式(Chain Of Responsibility)
- Count Complete Tree Nodes
- POJ 1276 Cash Machine (多重背包)
- nginx的accept互斥锁
- ACM学习-动态规划-子问题编码
- 打开新的页面.HTML
- uva10810(求逆序数)
- 对于JVM的浅解
- ZOJ-3897-Fiddlesticks
- 如何将Eclipse中的项目迁移到Android Studio 中