leetcode Count Complete Tree Nodes
2015-06-16 20:34
555 查看
对于每个节点如果左子树的高度等于右子树的高度,则直接套公式2^h-1,否则等于左子树的结点数量+右子树的结点数量+1
public class Solution {
public int countNodes(TreeNode root) {
if(root == null) return 0;
int l =getLeft(root)+1;
int r =getRight(root)+1;
if(l == r)
return (2<<(l-1))-1;
return countNodes(root.left)+countNodes(root.right) + 1;
}
private int getLeft(TreeNode root)
{
int height =0;
while(root!=null)
{
if(root.left != null)
height++;
root = root.left;
}
return height;
}
private int getRight(TreeNode root)
{
int height =0;
while(root !=null)
{
if(root.right != null)
height++;
root = root.right;
}
return height;
}
}
public class Solution {
public int countNodes(TreeNode root) {
if(root == null) return 0;
int l =getLeft(root)+1;
int r =getRight(root)+1;
if(l == r)
return (2<<(l-1))-1;
return countNodes(root.left)+countNodes(root.right) + 1;
}
private int getLeft(TreeNode root)
{
int height =0;
while(root!=null)
{
if(root.left != null)
height++;
root = root.left;
}
return height;
}
private int getRight(TreeNode root)
{
int height =0;
while(root !=null)
{
if(root.right != null)
height++;
root = root.right;
}
return height;
}
}
相关文章推荐
- Count Complete Tree Nodes
- leetcode--CountCompleteTreeNodes
- 使用async解决nodejs异步问题
- Swap Nodes in Pairs
- [LeetCode] Count Complete Tree Nodes
- HDFS中的NameNode和DataNode
- Node.js Express 使用 在Mac电脑
- node js 安装 以及 nvm 使用 在mac 电脑
- Count Complete Tree Nodes
- 配置haoop,datanode启动不了解决方式
- C实现 LeetCode->RemoveNthNodeFromEndofList
- LeetCode OJ 之 Count Complete Tree Nodes(计算完全二叉树的结点数目)
- 基于NODEJS的前后端项目分离实践
- nodejs express route 的用法
- GrammarNode API
- GrammarNode API
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- LeetCode 116 Populating Next Right Pointers in Each Node
- leetcode 25:Reverse Nodes in k-Group