C语言 | Leetcode C语言题解之第222题完全二叉树的节点个数

题目:

题解:

bool exists(struct TreeNode* root, int level, int k) {
    int bits = 1 << (level - 1);
    struct TreeNode* node = root;
    while (node != NULL && bits > 0) {
        if (!(bits & k)) {
            node = node->left;
        } else {
            node = node->right;
        }
        bits >>= 1;
    }
    return node != NULL;
}

int countNodes(struct TreeNode* root) {
    if (root == NULL) {
        return 0;
    }
    int level = 0;
    struct TreeNode* node = root;
    while (node->left != NULL) {
        level++;
        node = node->left;
    }
    int low = 1 << level, high = (1 << (level + 1)) - 1;
    while (low < high) {
        int mid = (high - low + 1) / 2 + low;
        if (exists(root, level, mid)) {
            low = mid;
        } else {
            high = mid - 1;
        }
    }
    return low;
}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 16:55:08       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 16:55:08       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 16:55:08       57 阅读
  4. Python语言-面向对象

    2024-07-09 16:55:08       68 阅读

热门阅读

  1. 云服务器如何隐藏源IP

    2024-07-09 16:55:08       32 阅读
  2. python 将stl数据转为vtk

    2024-07-09 16:55:08       22 阅读
  3. RISC-V的历史与设计理念

    2024-07-09 16:55:08       26 阅读
  4. mysql面试

    2024-07-09 16:55:08       32 阅读
  5. linux程序安装-编译-rpm-yum

    2024-07-09 16:55:08       23 阅读
  6. Haproxy搭建Web群集

    2024-07-09 16:55:08       30 阅读
  7. DNS隧道

    DNS隧道

    2024-07-09 16:55:08      32 阅读
  8. 利用node连接mongodb实现一个小型后端服务系统demo

    2024-07-09 16:55:08       27 阅读
  9. pdfplumber vs PyMuPDF:PDF文本、图像和表格识别的比较

    2024-07-09 16:55:08       31 阅读