1.问题描述
2.解决办法
1.迭代法
- 创建一个队列,将根节点放如
- 将root出队的同时将左右孩子放进队列,保证while循环
- 出队一个,累加一个
3.代码实现
class Solution {
// 迭代法
public int countNodes(TreeNode root) {
if (root == null) return 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int result = 0;
while (!queue.isEmpty()) {
int size = queue.size();
while (size -- > 0) {
TreeNode cur = queue.poll();
result++;
if (cur.left != null) queue.offer(cur.left);
if (cur.right != null) queue.offer(cur.right);
}
}
return result;
}
}