当前位置: 面试刷题>> 二叉树的最大深度(经典算法150题)


### 题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 **说明**: 叶子节点是指没有子节点的节点。 ### 示例 给定二叉树 `[3,9,20,null,null,15,7]`, ``` 3 / \ 9 20 / \ 15 7 ``` 其最大深度为 3。 ### 解题思路 要解决这个问题,我们可以使用递归的方法。递归的基本思想是:对于每个节点,它的最大深度等于其子节点中的最大深度加1(当前节点本身也算一层)。如果节点为空,则深度为0。 ### PHP 示例代码 ```php val = $val; $this->left = $left; $this->right = $right; } } function maxDepth($root) { if ($root === null) { return 0; } $leftDepth = maxDepth($root->left); $rightDepth = maxDepth($root->right); return max($leftDepth, $rightDepth) + 1; } // 示例用法 $root = new TreeNode(3); $root->left = new TreeNode(9); $root->right = new TreeNode(20); $root->right->left = new TreeNode(15); $root->right->right = new TreeNode(7); echo maxDepth($root); // 输出: 3 ?> ``` ### Python 示例代码 ```python class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def maxDepth(root): if not root: return 0 left_depth = maxDepth(root.left) right_depth = maxDepth(root.right) return max(left_depth, right_depth) + 1 # 示例用法 root = TreeNode(3) root.left = TreeNode(9) root.right = TreeNode(20) root.right.left = TreeNode(15) root.right.right = TreeNode(7) print(maxDepth(root)) # 输出: 3 ``` ### JavaScript 示例代码 ```javascript function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } function maxDepth(root) { if (!root) { return 0; } const leftDepth = maxDepth(root.left); const rightDepth = maxDepth(root.right); return Math.max(leftDepth, rightDepth) + 1; } // 示例用法 const root = new TreeNode(3); root.left = new TreeNode(9); root.right = new TreeNode(20); root.right.left = new TreeNode(15); root.right.right = new TreeNode(7); console.log(maxDepth(root)); // 输出: 3 ``` 这些代码示例都展示了如何递归地计算二叉树的最大深度。在面试中,能够清晰地阐述递归思想和实现细节是非常重要的。
推荐面试题