算法笔记
本题求二叉树的最大深度是二叉树中十分常见的一类题目,使用递归,迭代和层序遍历都可以实现,这里使用的为层序遍历。
题目描述
解题思路
二叉树的深度一般被认为是从根节点到叶子节点的长度,是自上而下的,二叉树的高度则是从下往上去数,注意区分。对于层序遍历来说,每一个for循环代表对于二叉树的一层进行遍历,那么只需要在这一层遍历时定义一个depth就可以记录最大的深度了,每遍历完一层深度就加一。
代码部分
class Solution {
public:
int maxDepth(TreeNode* root) {
queue<TreeNode*> que;
int depth = 0;
if(root != nullptr) {
que.push(root);
}
while(!que.empty()) {
int size = que.size();
depth++;
for(int i = 0; i < size; i++) {
TreeNode* node = que.front();
que.pop();
if(node -> left) {
que.push(node -> left);
}
if(node -> right) {
que.push(node -> right);
}
}
}
return depth;
}
};
结语
这道题目的是二叉树当中必须要掌握的,只要理解了逻辑就可以轻松解题。