
1.使用递归来实现
class Solution {
public:
int countNodes(TreeNode* root)
{
if(root == nullptr) return 0;
return countNodes(root->left) + countNodes(root->right) + 1;
}
};
2. 根据完全二叉树的性质简化遍历次数
- 如果根节点的左子树深度等于右子树深度,则说明左子树为满二叉树

- 如果根节点的左子树深度大于右子树深度,则说明右子树为满二叉树

class Solution {
public:
// 统计树的深度
int countLevels(TreeNode* root) {
int levels = 0;
while (root) {

本文探讨如何利用完全二叉树的性质计算节点数量。通过递归和二分法,可以有效地确定总节点数。当根节点左右子树深度相等时,左子树为满二叉树;若左子树深度大于右子树深度,右子树为满二叉树。节点总数由倒数第二层节点数和最后一层节点数决定。对于最后一层节点数的判断,可以借助二分法找到最后一个非空节点的索引来完成。
最低0.47元/天 解锁文章
575

被折叠的 条评论
为什么被折叠?



