- 描述: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.
树的结构:
/**
Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
*/
分析:这道题是要寻找一棵二叉树的深度
思路一:用DFS递归实现。
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root == NULL) return 0;
return 1 + max(maxDepth(root -> left), maxDepth(root -> right));
}
};
- 思路二:用BFS非递归实现。
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root == NULL) return 0;
queue <TreeNode*> my_queue;
my_queue.push(root);
int count = 0;
while(!my_queue.empty()) {
int n = my_queue.size();
count++;
for (int i = 0; i < n; i++) {
TreeNode *temp = my_queue.front();
my_queue.pop();
if (temp -> left != NULL) {
my_queue.push(temp -> left);
}
if (temp -> right != NULL) {
my_queue.push(temp -> right);
}
}
}
return count;
}
};