此树的深度和其左(右)子树的深度之间的关系。显然,此树的深度 等于 左子树的深度 与 右子树的深度中的 最大值 +1;
算法解析:
1.终止条件: 当 root 为空,说明已越过叶节点,因此返回 深度 000 。
2.递推工作: 本质上是对树做后序遍历。
3.计算节点 root 的 左子树的深度 ,即调用 maxDepth(root.left)。
4.计算节点 root 的 右子树的深度 ,即调用 maxDepth(root.right)。
返回值: 返回 此树的深度 ,即 max(maxDepth(root.left), maxDepth(root.right)) + 1。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
//拿着 C 语言编译器写了半天C++, 我就是小丑
/*自己的想法,但是好像把DFS 与 BFS 给夹杂到一块了,啊这真的是无语了
if (root == nullptr)
return 0;
int count = 1;
while(1)
{
}
//进行一个左递归 ,以及右递归
root -> left =
root -> right =
*/
if(root == nullptr)
return 0;
return max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
}
};
作者:烟花真的易冷
链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/solutions/2755957/104-er-cha-shu-de-zui-da-shen-du-by-yan-069l4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
PS: 今天不想写了,DFS 与 BFS的区别,明天一定补上。