题目链接
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
解法一:迭代法
BFS通用模板,因为只需要记录个数,所以不用记录每一层的个数。
public int countNodes(TreeNode root) {
if (root == null) {
return 0;
}
int count = 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
count++;
}
return count;
}
解法二:递归法
递归三步:
1.确定函数入参和返回值
2.确定终止条件
3.确定单层逻辑
public int dfs(TreeNode root) {
if (root == null) {
return 0;
}
int leftCount = dfs(root.left);
int rightCount = dfs(root.right);
return leftCount + rightCount + 1;
}