剑指OFFER 二叉树的深度
这道题用深搜或者宽搜都可以完成,这里我就直接用深搜了.
思路
代码上让depth每进一个左孩子/右孩子便使深度+1,离开的时候再深度-1来保证depth记录当前深度.
得到depth实时记录当前遍历到结点的深度后,设置一个max_depth保留最大的深度值.
代码
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
int depth = 0;
int max_depth = INT_MIN;
void recur(TreeNode* node)
{
depth++;
if(depth>max_depth)max_depth = depth;
if(node->left != NULL){
recur(node->left);
depth--;
}
if(node->right != NULL){
recur(node->right);
depth--;
}
}
int TreeDepth(TreeNode* pRoot)
{
if(pRoot == NULL)return 0;
recur(pRoot);
return max_depth;
}
};