104. 二叉树的最大深度
Posted Debroon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了104. 二叉树的最大深度相关的知识,希望对你有一定的参考价值。
104. 二叉树的最大深度
题目
传送门:https://leetcode.cn/problems/maximum-depth-of-binary-tree/
算法设计:回溯
回溯框架,请猛击:《常见递归模式》。
思路:遍历一遍二叉树,用一个外部变量记录每个节点所在的深度,取最大值就可以得到最大深度,这就是遍历二叉树计算答案的思路。
递归函数 = 回溯模式 + 前序位置 + 做某事(选出最大深度)
class Solution
int res = 0;
int depth = 0; // 记录遍历到的节点的深度
public:
int maxDepth(TreeNode *root)
recall(root);
return res;
void recall(TreeNode *root)
if (root == nullptr)
return;
depth++;
res = max(res, depth);
recall(root->left);
recall(root->right);
depth--;
;
算法设计:分解子问题
分解子问题框架,请猛击:《常见递归模式》。
一棵二叉树的最大深度可以通过子树的最大深度推导出来。
递归函数 = 分解子问题模式 + 后序位置 + 做某事【树的深度 = max(左子树最大深度 + 右子树最大深度)+ 根节点自己】
class Solution
public:
int maxDepth(TreeNode* root)
if (root == nullptr) return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
;
以上是关于104. 二叉树的最大深度的主要内容,如果未能解决你的问题,请参考以下文章