The Count Complete Tree Nodes solutions are below.
15 Jun 2024•Easy•C++ / Python / TypeScript
Count Complete Tree Nodes
C++, Python and TypeScript solutions for Count Complete Tree Nodes.
Solution files
Python•count-complete-tree-nodes/synced-solution.py
class Solution:
def countNodes(self, root: Optional[TreeNode]) -> int:
def left_height(node):
height = 0
while node:
height += 1
node = node.left
return height
def right_height(node):
height = 0
while node:
height += 1
node = node.right
return height
if not root:
return 0
lh = left_height(root)
rh = right_height(root)
if lh == rh:
return (1 << lh) - 1
return 1 + self.countNodes(root.left) + self.countNodes(root.right)
C++•count-complete-tree-nodes/synced-solution.cpp
class Solution {
public:
int countNodes(TreeNode* root) {
if (!root) {
return 0;
}
int leftHeight = getLeftHeight(root);
int rightHeight = getRightHeight(root);
if (leftHeight == rightHeight) {
return (1 << leftHeight) - 1;
}
return 1 + countNodes(root->left) + countNodes(root->right);
}
private:
int getLeftHeight(TreeNode* node) {
int height = 0;
while (node) {
height++;
node = node->left;
}
return height;
}
int getRightHeight(TreeNode* node) {
int height = 0;
while (node) {
height++;
node = node->right;
}
return height;
}
};
TypeScript•count-complete-tree-nodes/synced-solution.ts
function countNodes(root: TreeNode | null): number {
const getLeftHeight = (node: TreeNode | null): number => {
let height = 0;
while (node) {
height++;
node = node.left;
}
return height;
};
const getRightHeight = (node: TreeNode | null): number => {
let height = 0;
while (node) {
height++;
node = node.right;
}
return height;
};
if (!root) {
return 0;
}
const leftHeight = getLeftHeight(root);
const rightHeight = getRightHeight(root);
if (leftHeight === rightHeight) {
return (1 << leftHeight) - 1;
}
return 1 + countNodes(root.left) + countNodes(root.right);
}