給定二叉樹,求最大深度:根節點到最遠葉子節點的路徑節點數。
後序遍歷。空節點深度 0。左右子樹深度取最大值 +1。
struct TreeNode { int val; TreeNode *left, *right; TreeNode(int x):val(x),left(nullptr),right(nullptr){} };
class Solution {
public:
int maxDepth(TreeNode* root) {
if (!root) return 0;
int L = maxDepth(root->left);
int R = maxDepth(root->right);
return 1 + (L > R ? L : R);
}
};
O(N)。O(H) 遞歸棧。與 Minimum Depth 邏輯對稱,只是取 max 而非 min,且無單分支特判。