(2022.02.23)二叉树总结篇(1)
⼆叉树题目的递归解法可以分两类思路,
第⼀类是遍历⼀遍⼆叉树得出答案
第⼆类是通过分解问题计算出答案
这两类思路分别对应着 回溯算法核心框架 和 动态规划核心框架。
⼆叉树的所有问题,就是让你在前中后序位置注入巧妙的代码逻辑,去达到自己的目的。
104、二叉树的最大深度问题
比较简单
//使用临时变量保存当前深度时不要维护节点退出后的深度,即不需要index--,因为每一层退出,临时变量销毁
class Solution {
private:
//树不存在的时候,最大深度为0
int maxDep = 0;
public:
int maxDepth(TreeNode* root) {
int index = 0;
traverse(root,index);
return maxDep;
}
void traverse(TreeNode* node,int index){
if(node == nullptr){
maxDep = max(maxDep,index);
return;
}
index++;
traverse(node->left,index);
traverse(node->right,index);
}
};
//使用全局变量保存当前深度时,需要维护推出的深度,因为全局变量使用了同一个,在退出当前节点时,需要index--,获得返回上一层节点的深度。
class Solution {
private:
int maxDep = 0;
int index = 0;
public:
int maxDepth(TreeNode* root) {
traverse(root);
return maxDep;
}
void traverse(TreeNode* node){
if(node == nullptr){
maxDep = max(maxDep,index);
return;
}
index++;
traverse(node->left);
traverse(node->right);
index--;
}
};
原文地址:https://www.cnblogs.com/kusola9808/p/15928933.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。