Leetcode 222. 完全二叉树的节点个数

Leetcode 222. 完全二叉树的节点个数_第1张图片

遍历一遍的时间复杂度是O(N), 并没有用到完全二叉树的特性。

我们先来解决满二叉树的问题,在完全二叉树的基础上判断满二叉树是很容易的。所以有了以下做法

class Solution {
public:
    int countNodes(TreeNode* root) {
        if(root==NULL) return 0;
        auto left = root->left, right = root->right;
        int x = 1, y = 1;
        while(left) left = left->left,x++;
        while(right) right = right->right,y++;
        if(x==y) return (1<left)+countNodes(root->right);
    }
};

 

你可能感兴趣的:(算法)