题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
©来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
递归算法
class Solution {
public:
int maxDepth(TreeNode* root) {
if (!root)
return 0;
else {
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
}
};
DFS算法
class Solution {
public:
int maxDepth(TreeNode* root) {
stack<pair<TreeNode*, int>> s;
int maxDep = 0;
if (root)
s.emplace(root, 1);
while (!s.empty()) {
auto cur = s.top();
s.pop();
TreeNode* curTree = cur.first;
int curDep = cur.second;
maxDep = max(maxDep, curDep);
if (curTree->left)
s.emplace(curTree->left, curDep + 1);
if (curTree->right)
s.emplace(curTree->right, curDep + 1);
}
return maxDep;
}
};