标题
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.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
return its depth = 3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
递归
#include <iostream>
using namespace std;
/// Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/// Recursive
/// Time Complexity: O(n), where n is the nodes' number in the tree
/// Space Complexity: O(h), where h is the height of the tree
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == NULL)
return 0;
return 1 + max(maxDepth(root->left), maxDepth(root->right));
}
};
int main() {
return 0;
}
思路二
非递归
#include <iostream>
#include <stack>
using namespace std;
/// Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/// Non-recursive
/// Time Complexity: O(n), where n is the nodes' number in the tree
/// Space Complexity: O(h), where h is the height of the tree
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == NULL)
return 0;
stack<pair<TreeNode*, int>> s;
s.push(make_pair(root, 1));
int res = 0;
while(!s.empty()){
TreeNode* curNode = s.top().first;
int depth = s.top().second;
s.pop();
if(curNode->left == NULL && curNode->right == NULL)
res = max(res, depth);
else{
if(curNode->left)
s.push(make_pair(curNode->left, depth + 1));
if(curNode->right)
s.push(make_pair(curNode->right, depth + 1));
}
}
return res;
}
};
int main() {
return 0;
}