您的位置:首页 > 其它

LeetCode | Maximum Depth of Binary Tree

2016-08-08 10:25 246 查看
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.

没什么好说的,最远距离也就是树的深度,30s写完一次AC,注意对这些基础的算法要掌握的很熟练

class Solution {
public:
int maxDepth(TreeNode* root) {
if(!root) return 0;

int left=maxDepth(root->left);
int right=maxDepth(root->right);

return max(left,right)+1;
}
};
//也可以一行搞定,其实也就是简写了而已
return root?max(maxDepth(root->left),maxDepth(root->right))+1:0;


以下是使用队列完成非递归的做法

注意其使用for循环的做法,少去了另开一个数组,比较好

//非递归求深度
int maxD=0;
queue<TreeNode*> Q;
Q.push(root);
while(!Q.empty()){
// queue<TreeNode*> Q1;
// while(!Q.empty()){
//使用队列,并且在弹出元素之前记录当前需要弹出多少个元素
//这样就不必使用两个指针
//换用for循环,从32ms减到8ms
for(int i=0,n=Q.size();i<n;i++){
TreeNode* node=Q.front();
Q.pop();
if(node->left) Q.push(node->left);
if(node->right) Q.push(node->right);
}
maxD++;
}

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