我感觉会有更简单的方法,但是我不知道,我这几题二叉树,只有一题是用bfs,所以这题我也用了bfs
222. 完全二叉树的节点个数
题目:


题解:
java
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public int countNodes(TreeNode root) {
int sum=0;
if(root == null) {
return 0;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
sum++;
while(queue.size() > 0) {
//poll是取出并移除,peek是查看
TreeNode treeNode = queue.poll();
if(treeNode.left != null) {
queue.offer(treeNode.left);
sum++;
}
if(treeNode.right != null) {
queue.offer(treeNode.right);
sum++;
}
}
return sum;
}
}