题目链接:LC 104. 二叉树的最大深度
2020.10.10第一次解答:
1551,发现自己二叉树相关的知识一点不会,都还给老师了
数据结构白上了
刚看到题还傻乎乎地在想怎么保证depth的唯一性,一个结点有左右两个儿子结点,递归的时候depth++会运行两遍啊。到达根节点的时候再退回来,父节点的层数又如何保存?懵了。
一看题解,果然还是自己太水了。
解题思路
使用递归,逐层计算子树的最大深度。
采用这种方法的原理是逆向计算,从叶子结点向上计算,便可获取到其父节点的子树的最大深度。由此不断回溯至根节点,边可获取整棵树的最大深度。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int maxDepth(TreeNode* root) {
return root == nullptr ? 0 : max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
};