222. 完全二叉树的节点个数

深度优先搜索

class Solution {
    public int countNodes(TreeNode root) {

        if (root == null){
            return 0;
        }

        return countNodes(root.left) + countNodes(root.right) + 1;
    }
}

/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(logn)
 */

广度优先搜索

class Solution {
    public int countNodes(TreeNode root) {

        if (root == null){
            return 0;
        }
        
        Queue<TreeNode> queue = new LinkedList<>();
        int sum = 0;
        
        queue.add(root);
        
        while (!queue.isEmpty()){
            
            int size = queue.size();
            sum += size;

            for (int i = 0; i < size; i++) {
                
                TreeNode temp = queue.poll();
                
                if (temp.left != null){
                    queue.add(temp.left);
                }
                
                if (temp.right != null){
                    queue.add(temp.right);
                }
            }
        }
        
        return sum;
    }
}

/**
 * 时间复杂度 O(n)
 * 空间复杂度 O(n)
 */

https://leetcode-cn.com/problems/count-complete-tree-nodes/

posted @ 2021-12-25 20:16  振袖秋枫问红叶  阅读(28)  评论(0)    收藏  举报