【Hot 100 刷题计划】 LeetCode 104. 二叉树的最大深度 | C++ 自底向上递归最优解
LeetCode 104. 二叉树的最大深度 题目描述题目级别简单给定一个二叉树root返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。示例 1:输入root [3,9,20,null,null,15,7]输出3 破题思路自底向上递归 (Bottom-up DFS)求树的最大深度最优雅的方式是使用自底向上的思维其实也就是二叉树的后序遍历。我们可以这样思考如果我是一个节点我怎么知道以我为根的这棵树有多深很简单我只需要问我的左孩子“你的左子树有多深”再问我的右孩子“你的右子树有多深”。我拿到他们俩的回答后挑一个比较大的然后加上我自己的这一层1这就是我的最大深度然后我再把这个结果理直气壮地汇报给我的父节点。如此循环往复直到最底层的空节点空节点直接返回 0。整个过程不需要借助任何外部的全局变量。 C 代码实现 (1行代码极简版)classSolution{public:intmaxDepth(TreeNode*root){// 递归终止条件如果节点为空深度就是 0if(rootnullptr)return0;// 拿到左子树的最大深度intleftDepthmaxDepth(root-left);// 拿到右子树的最大深度intrightDepthmaxDepth(root-right);// 取两者的最大值加上当前节点自己的这 1 层向上返回returnmax(leftDepth,rightDepth)1;// 极客装杯写法只需一行代码// return root ? max(maxDepth(root-left), maxDepth(root-right)) 1 : 0;}};