Description
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.
Example
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its depth = 3.
Solution 1(C++)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
static int x=[](){std::ios::sync_with_stdio(false); cin.tie(NULL); return 0; }();
class Solution {
public:
int maxDepth(TreeNode* root) {
int maxlv=0;
if(root==NULL) return maxlv;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
maxlv++;
long len=q.size();
for(int i=0; i<len; i++){
TreeNode* temp=q.front();
q.pop();
if(temp->left) q.push(temp->left);
if(temp->right) q.push(temp->right);
}
}
return maxlv;
}
};
Solution 2(C++)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
static string opt =[](){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return "";
}();
class Solution
{
public:
int maxDepth(TreeNode* root)
{
if(!root)
return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
};
算法分析
解法一自己做得,解法二参考别人的,我觉得解法二比较好的体现了树这种结构。每一个根节点有自己的子节点,每一个子节点又有自己的子节点,天然适合迭代。
程序分析
略。