目录
一、题目描述
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
示例 1:
输入:root = [1,2,3,4,5,6]
输出:6
示例 2:
输入:root = []
输出:0
示例 3:
输入:root = [1]
输出:1
二、运行结果
三、解题思路
这里采用的是层序遍历的方式,利用一个辅助队列,保存每一层的结点,在开始遍历每一层节点之前,先统计当前层结点数,然后将每层节点累计相加即可。
具体层次遍历代码可以参考的我的另一篇博客:https://blog.csdn.net/LJH132465/article/details/126983211
四、代码
class Solution {
public int countNodes(TreeNode root) {
int ans = 0;
if(root == null) return 0;
Deque<TreeNode> q = new LinkedList<TreeNode>();
q.add(root);
while(!q.isEmpty()){
int size = q.size(); //当前层的结点个数
ans += size;
for(int i=0; i<size; ++i){ //遍历当前层的结点
TreeNode node = q.poll();
if(node.left != null)
q.add(node.left);
if(node.right != null)
q.add(node.right);
}
}
return ans;
}
}