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. PHP MySQL 读取数据

    2024-07-09 16:55:08       0 阅读
  2. Handler续谈(epoll)

    2024-07-09 16:55:08       0 阅读
  3. Git提交到错误分支怎么办?(解决办法)

    2024-07-09 16:55:08       0 阅读
  4. 在ubuntu系统上安装qt 2

    2024-07-09 16:55:08       0 阅读
  5. CONFIG_MTD_SPI_NOR_USE_4K_SECTORS

    2024-07-09 16:55:08       0 阅读
  6. 网络通信协议

    2024-07-09 16:55:08       0 阅读
  7. opencv 使用XML和YAML格式来输入输出文件

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

热门阅读

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

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

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

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

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

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

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

    DNS隧道

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

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

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