1. 题目描述:
  2. 给定一个二叉树,找出其最大深度。
  3. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
  4. 说明: 叶子节点是指没有子节点的节点。
  5. 示例:
  6. 给定二叉树 [3,9,20,null,null,15,7],
  7. 3
  8. / \
  9. 9 20
  10. / \
  11. 15 7
  12. 返回它的最大深度 3
  13. var maxDepth = function(root) {
  14. //TODO
  15. }

我的回答

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val) {
  4. * this.val = val;
  5. * this.left = this.right = null;
  6. * }
  7. */
  8. /**
  9. * @param {TreeNode} root
  10. * @return {number}
  11. */
  12. var maxDepth = function(root) {
  13. if(!root) return 0;
  14. return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
  15. };

参考回答

  1. //思路:当前节点的最大深度就是左子树最大深度和右子树最大深度之间的最大值加1。递归的终止条件为空节点时返回深度为0;
  2. /**
  3. @param {TreeNode} root
  4. @return {number} */
  5. var maxDepth = function(root) {
  6. if (!root) { return 0; }
  7. const childDepth = Math.max(maxDepth(root.left), maxDepth(root.right))
  8. return childDepth + 1;
  9. };