Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
DFS:
int maxDepth(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL) return 0; int left = maxDepth(root->left); int right = maxDepth(root->right); return left > right ? left + 1 : right +1; }
BFS:
int maxDepth(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if(root == NULL) return 0; queue<TreeNode*> que; que.push(root); int count = 1; int depth = 0; while(!que.empty()) { TreeNode* tmp = que.front(); que.pop(); count--; if(tmp->left) que.push(tmp->left); if(tmp->right) que.push(tmp->right); if(count == 0) { depth++; count=que.size(); } } return depth; }