您的位置:首页 > Web前端 > Node.js

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: