题目:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
解答:1. 递归版本
class Solution {
public:
int maxDepth(TreeNode *p) {
if (!p) return 0;
int left_height = maxDepth(p->left);
int right_height = maxDepth(p->right);
return (left_height > right_height) ? left_height + 1 : right_height + 1;
}
};
2.迭代版本
class Solution {
public:
int maxDepth(TreeNode *root) {
if (!root) return 0;
stack<TreeNode*> s;
s.push(root);
int maxDepth = 0;
TreeNode *prev = NULL;
while (!s.empty()) {
TreeNode *curr = s.top();
if (!prev || prev->left == curr || prev->right == curr) {
if (curr->left)
s.push(curr->left);
else if (curr->right)
s.push(curr->right);
} else if (curr->left == prev) {
if (curr->right)
s.push(curr->right);
} else {
s.pop();
}
prev = curr;
if (s.size() > maxDepth)
maxDepth = s.size();
}
return maxDepth;
}
};
扩展: