LeetCode.104. 二叉树的最大深度

LeetCode.104. 二叉树的最大深度

LeetCode.104. 二叉树的最大深度
 

 DFS,递归方法

/**
 * 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;
 *     }
 * }
 */
//  DFS,递归
class Solution {
    public int maxDepth(TreeNode root) {
       if (root == null) {
           return 0;
       }
       int leftHeight = maxDepth(root.left);
       int rightHeight = maxDepth(root.right);
       return Math.max(leftHeight, rightHeight) + 1;
    }
}

复杂度分析:

  • 时间复杂度:O(n),其中 nn 为二叉树节点的个数。每个节点在递归中只被遍历一次。
  • 空间复杂度:O(height),其中height 表示二叉树的高度。递归函数需要栈空间,而栈空间取决于递归的深度,因此空间复杂度等价于二叉树的高度。

 

BFS

//  BFS
class Solution {
    public int maxDepth(TreeNode root) {
        int depth = 0;
        Queue<TreeNode> queue = new LinkedList<>();
        if (root == null) {
            return depth;
        }
        queue.offer(root);
        while (!queue.isEmpty()) {
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }
            depth++;
        }
        return depth;
    }
}

上一篇:LeetCode.515. 在每个树行中找最大值


下一篇:clickhouse常见异常以及错误码解决