题目描述:
首刷自解:
int maxDepth(TreeNode* root) {
if (root == nullptr) return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
int maxDepth_iteration(TreeNode* root) {
if (!root) return 0;
stack<pair<TreeNode*,int>> stk;
int deep = 0, dpst = 0;
while (root||!stk.empty())
{
while (root) // 一直往左
{
++deep;
stk.emplace(make_pair(root,deep));
root = root->left;
}
deep = stk.top().second; // 回溯,往右·
dpst = max(dpst, deep);
root = stk.top().first->right;
stk.pop();
}
return dpst;
}