目录
题目:
示例:
分析:
代码:
题目:
示例:
分析:
从这一题开始,LeetCode75进入到了二叉树章节。
这边建议不熟悉二叉树的小伙伴可以先去做做力扣的前序遍历,中序遍历和后序遍历。
力扣https://leetcode.cn/problems/binary-tree-preorder-traversal/description/
力扣https://leetcode.cn/problems/binary-tree-inorder-traversal/submissions/力扣https://leetcode.cn/problems/binary-tree-postorder-traversal/description/
那么本题是让我们求出二叉树的最大深度,我们直接递归遍历二叉树,然后在递归的同时我们携带一个参数,那就是当前二叉树节点的深度,然后每次递归我们都将这个参数+1表示深度+1。
递归到了空指针(空节点)的时候,我们就将当前节点的深度和之前保存的答案做个比较,将保存的答案更新为较大的值。
具体可以参考下面的代码以及动图,动图是完整的把递归遍历的过程复现了一遍。
代码:
class Solution {
public:int res=0;void find(TreeNode* root,int deep){if(root==nullptr){res=max(res,deep);return;}find(root->left,deep+1);find(root->right,deep+1);}int maxDepth(TreeNode* root) {find(root,0);return res;}
};