思路:
层序遍历迭代法一遍过。
递归法就。。
储备:
最后:
迭代:
class Solution {
public:
int maxDepth(TreeNode* root) {
queue<TreeNode*> que;
int depth=0;
if (root) que.push(root);
while (!que.empty()) {
int sz=que.size();
for (int i=0;i<sz;i++) {
TreeNode* cur=que.front();
que.pop();
if (cur->left) que.push(cur->left);
if (cur->right) que.push(cur->right);
}
depth++;
}
return depth;
}
};
递归:
有后序和先序两种。就感觉后序比较主流。先序我也不太理解,就不搞了
主函数从0开始。进入递归之后从1开始。这个可以当递归模板。
自从做了572之后就知道递归很重要。递归的做法也是要会的。
后序遍历,左右中之后刚好回去。
后序遍历是求高度的。从根节点开始的高度就叫树的深度。非根节点就是高度
class Solution {
public:
int getDepth(TreeNode* node) {//这是后序遍历
if (node==nullptr) return 0;//遇到空就停下来。
int ld=getDepth(node->left);//左
int rd=getDepth(node->right);//右
int depth=1+max(ld,rd);//中
return depth;
}
int maxDepth(TreeNode* root) {//递归法
return getDepth(root);
}//主函数从0开始。进入递归之后从1开始。这个当递归模板吧
};
递归精简版:
class Solution {
public:
int maxDepth(TreeNode* root) {//递归法精简版
if (root==nullptr) return 0;
return 1+max(maxDepth(root->left),maxDepth(root->right));
}//精简版一上来就是调用自身的操作。
}

653

被折叠的 条评论
为什么被折叠?



