classSolution{public:intmaxDepth(TreeNode* root){if(!root)return0;auto left =maxDepth(root->left);auto right =maxDepth(root->right);return1+max(left, right);}};
非再帰
classSolution{public:intmaxDepth(TreeNode* root){int maxDep =0;
TreeNode *p = root,*r =nullptr;
stack<TreeNode*> s;while(p ||!s.empty()){if(p){
s.push(p);
p = p->left;}else{
p = s.top();if(p->right && p->right != r)
p = p->right;else{
maxDep =(maxDep > s.size()? maxDep : s.size());
s.pop();
r = p;
p =nullptr;}}}return maxDep;}};