static int _maxDepth(Node<T> const* node) { if (node == nullptr) { return 0; } else { return 1 + std::max(_maxDepth(node->left), _maxDepth(node->right)); } }
void _maxDepth(TreeNode *root, int &depth){ if(!root) return; depth++; int L = depth, R = depth; _maxDepth(root->left, L); _maxDepth(root->right, R); depth = std::max(L, R); }
int maxDepth(TreeNode *root) { if(!root) return 0; int depth = 1; int L = depth, R = depth; _maxDepth(root->left, L); _maxDepth(root->right, R); return std::max(L, R); }