您的位置:首页 > 其它

LeetCode-104. Maximum Depth of Binary Tree

2018-04-03 14:14 288 查看

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
9bf0
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;
}
};


算法分析

解法一自己做得,解法二参考别人的,我觉得解法二比较好的体现了树这种结构。每一个根节点有自己的子节点,每一个子节点又有自己的子节点,天然适合迭代。

程序分析

略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: