Count Complete Tree Nodes
2015-06-07 11:50
591 查看
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.
1. Get the height of the tree : because it is a complete tree, we can get the height of it from it's leftmost branch. If the tree just has one node, the height is 0, if root==null, the height is -1.
2. Get the height of the right subtree, if the height of the right subtree just one less than that of
the whole tree, then the last node on the last row should be at the right subtree, the number of nodes on the left subtree plus the root should be 2^h and recursively get the number of nodes on the right subtree. If the height of the right subtree is not
one less than that of the whole tree, than the last node on the last row should be at the left subtree, the number of nodes on the right subtree plus the root should be 2^(h-1) and recursively get the number of the nodes on the left subtree.
/**
* 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) {
int h = height(root);
return h < 0 ? 0 :
height(root.right) == h-1 ? (1 << h) + countNodes(root.right)
: (1 << h-1) + countNodes(root.left);
}
private int height(TreeNode root) {
return root == null ? -1: height(root.left) + 1;
}
}
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.
1. Get the height of the tree : because it is a complete tree, we can get the height of it from it's leftmost branch. If the tree just has one node, the height is 0, if root==null, the height is -1.
2. Get the height of the right subtree, if the height of the right subtree just one less than that of
the whole tree, then the last node on the last row should be at the right subtree, the number of nodes on the left subtree plus the root should be 2^h and recursively get the number of nodes on the right subtree. If the height of the right subtree is not
one less than that of the whole tree, than the last node on the last row should be at the left subtree, the number of nodes on the right subtree plus the root should be 2^(h-1) and recursively get the number of the nodes on the left subtree.
/**
* 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) {
int h = height(root);
return h < 0 ? 0 :
height(root.right) == h-1 ? (1 << h) + countNodes(root.right)
: (1 << h-1) + countNodes(root.left);
}
private int height(TreeNode root) {
return root == null ? -1: height(root.left) + 1;
}
}
相关文章推荐
- nodejs版本更新问题:express不是内部或外部命令
- nodejs版本更新问题:express不是内部或外部命令
- LeetCode Count Complete Tree Nodes
- nodejs express 安装需要注意的一些问题
- [LeetCode]Count Complete Tree Nodes
- Leetcode: Count Complete Tree Nodes
- DaoCloud部署Node
- 10个令人惊讶的NodeJS开源项目
- leetcode - Count Complete Tree Nodes
- openstack-计算节点安装(Node)
- [LeetCode] Count Complete Tree Nodes
- Count Complete Tree Nodes
- [LeetCode] Count Complete Tree Nodes
- JavaScript DOM中的Node节点及节点操作
- [ nodeJS ] nodeJS 与 npm(node pagkage manager) 配置.
- nodejs中express框架
- 25. Reverse Nodes in k-Group
- openstack--计算节点安装(Node)
- Swap Nodes in Pairs
- LeetCode "Count Complete Tree Nodes"