一、题意
二、思考过程
**思路:**二叉树的最大深度就是根节点的高度。
方法:求根节点的高度就是求后序遍历即可。
2.1递归法:
- 确定递归函数的参数和返回值
int getDepth(TreeNode * node)
- 确定终止条件
if(node==NULL) return 0;
- 确定单层递归逻辑
确定单层递归的逻辑:先求它的左子树的深度,再求的右子树的深度,最后取左右深度最大的数值 再+1 (加1是因为算上当前中间节点)就是目前节点为根节点的树的深度。
后序遍历:左-右-中
int leftDepth=getDepth(node->left);//左 int rightDepth=getDepth(node->right);//右 int depth=1+max(leftDepth,rightDepth);//中
完整代码:
class Solution { public: int getDepth(TreeNode* node) { if(node==NULL) return 0; int leftDepth=getDepth(node->left);//左 int rightDepth=getDepth(node->right);//右 int depth=1+max(leftDepth,rightDepth);//中 return depth; } int maxDepth(TreeNode* root) { return getDepth(root); } };