【LeetCode】【222】【Count Complete Tree Nodes】

题目:Given a complete binary tree, count the number of nodes.
解题思路:完全树的定义就不用我说了吧,本人想了很多种方法都超时。。。。借鉴一下LeetCode大神的方法:https://leetcode.com/problems/count-complete-tree-nodes/discuss/61958/Concise-Java-solutions-O(log(n)2)
先贴一下代码,等有时间再回来写思路:
代码:

class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode(int x) { val = x; }
}
    public int countNodes(TreeNode root) {
        if(root == null) return 0;
        int h = height(root);
        if(height(root.left ) == height(root.right))
            return (h-1>0?1<<h-1:1) + countNodes(root.right);
        else
            return (h-2>0?1<<h-2:1) + countNodes(root.left);
    }
    public int height(TreeNode root){
        return root == null?0:1+height(root.left);
    }

猜你喜欢

转载自blog.csdn.net/u012503241/article/details/82947202