二叉树的最大深度

二叉树的最大深度

问题

这个题目说的是,给你一棵二叉树,你要找到从根节点到最远叶子节点的深度。

比如说,给你的二叉树是

    1
  /   \
 2     4
      / \
     8  16

这棵树有 3 个叶子节点,分别是 2,8,16。最远的叶子节点是 8 和 16,根节点到 8 或 16 都有 3 个节点,因此最大深度是 3。

代码

public class AlgoCasts {

  public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
      val = x;
    }
  }

  // Time: O(n), Space: (n)
  public int maxDepth(TreeNode root) {
    if (root == null) return 0;
    return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
  }

  // Time: O(n), Space: O(n)
  public int maxDepthIterative(TreeNode root) {
    if (root == null) return 0;
    Queue<TreeNode> q = new LinkedList<>();
    q.add(root);
    int depth = 0;

    while (!q.isEmpty()) {
      int size = q.size();
      for (int i = 0; i < size; ++i) {
        TreeNode s = q.poll();
        if (s.left != null) q.add(s.left);
        if (s.right != null) q.add(s.right);
      }
      ++depth;
    }

    return depth;
  }

}

  转载请注明: ForwardXu 二叉树的最大深度

 上一篇
二叉树的逆层序遍历 二叉树的逆层序遍历
二叉树的逆层序遍历问题 这个题目说的是,给你一棵二叉树,要求你从叶子节点到根节点一层一层地对其进行访问,对于每一层的节点,则是从左向右进行访问。将访问的结果以二维数组返回。 这道题目和二叉树层序遍历的唯一区别是,它是从下向上一层一层去访问的
2018-12-28
下一篇 
二叉树的层序遍历 二叉树的层序遍历
二叉树的层序遍历问题 这个题目说的是,给你一棵二叉树,要求你从根节点到叶子节点一层一层地对其进行访问,对于每一层的节点,则是从左向右进行访问。将访问的结果以二维数组返回。 比如说,给你的二叉树是: 1 / \ 2
2018-12-28
  目录