题目描述

原题链接
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 15 7

返回它的最大深度 3 。

个人解法

Javascript

DFS

  1. /*
  2. * @lc app=leetcode.cn id=104 lang=javascript
  3. *
  4. * [104] 二叉树的最大深度
  5. */
  6. // @lc code=start
  7. /**
  8. * Definition for a binary tree node.
  9. * function TreeNode(val, left, right) {
  10. * this.val = (val===undefined ? 0 : val)
  11. * this.left = (left===undefined ? null : left)
  12. * this.right = (right===undefined ? null : right)
  13. * }
  14. */
  15. /**
  16. * @param {TreeNode} root
  17. * @return {number}
  18. */
  19. var maxDepth = function (root) {
  20. if (!root) return 0;
  21. return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
  22. };
  23. // @lc code=end

Java

其他解法

Java

Javascript

BFS

  1. class Solution {
  2. public:
  3. int maxDepth(TreeNode* root) {
  4. if (root == nullptr) return 0;
  5. queue<TreeNode*> Q;
  6. Q.push(root);
  7. int ans = 0;
  8. while (!Q.empty()) {
  9. int sz = Q.size();
  10. while (sz > 0) {
  11. TreeNode* node = Q.front();Q.pop();
  12. if (node->left) Q.push(node->left);
  13. if (node->right) Q.push(node->right);
  14. sz -= 1;
  15. }
  16. ans += 1;
  17. }
  18. return ans;
  19. }
  20. };