网站为什么维护,网站建设及推广方案ppt,用phpcms建网站流程,wordpress如何创建项目给你一棵 完全二叉树 的根节点 root #xff0c;求出该树的节点个数。
完全二叉树 的定义如下#xff1a;在完全二叉树中#xff0c;除了最底层节点可能没填满外#xff0c;其余每层节点数都达到最大值#xff0c;并且最下面一层的节点都集中在该层最左边的若干位置。若最…给你一棵 完全二叉树 的根节点 root 求出该树的节点个数。
完全二叉树 的定义如下在完全二叉树中除了最底层节点可能没填满外其余每层节点数都达到最大值并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层则该层包含 1~ 2h 个节点。 示例 1 输入root [1,2,3,4,5,6]
输出6示例 2
输入root []
输出0示例 3
输入root [1]
输出1提示
树中节点的数目范围是[0, 5 * 104]0 Node.val 5 * 104题目数据保证输入的树是 完全二叉树 进阶遍历树来统计节点是一种时间复杂度为 O(n) 的简单解决方案。你可以设计一个更快的算法吗
/*** 统计完全二叉树的个数 -- 模板题* param root* return*/
int countNodes(TreeNode *root) {queueTreeNode * que;//加入根节点if (root ! NULL) que.push(root);//记录个数int count 0;//循环条件while (!que.empty()) {//用于控制每层结点的个数int size que.size();count size;//将元素放入队列中for (int i 0; i size; i) {//取出元素TreeNode *node que.front();//弹出元素que.pop();//加入左右结点if (node-left) que.push(node-left);if (node-right) que.push(node-right);}}return count;
}