题目描述:

Given a binary tree, find its minimum depth.

The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

解法一:非递归方式,使用层序遍历的方法,借助队列,思想比较简单。

int minDepth(TreeNode* root)
{
int res = ;
if(!root)
return res;
else
{
res = ;
queue<TreeNode*> q;
q.push(root);
int layer_size_left = q.size(); while(!q.empty())
{
TreeNode * temp = q.front();
q.pop();
-- layer_size_left;
if(temp->left)
q.push(temp->left); if(temp->right)
q.push(temp->right); if(!temp->left && !temp->right)
return res; if(layer_size_left == )
{
++ res;
layer_size_left = q.size();
}
}
}
return res; }

解法二:递归方式,递归方式看上去更简洁一些,而且更易扩展,比如稍作修改即可解出最大深度等,当然非递归方式使用层序遍历解最大深度也不难。

int minDepth(TreeNode* root)
{
if(!root)
return ;
int l = minDepth(root->left);
int r = minDepth(root->right); if(!l)
return + r;
if(!r)
return + l; return l > r ? + r : + l;
}

两者的运行效率差不太多,leetcode上显示运行时间都是9ms,但是都不是最快的解法,应该还有可以优化的地方!这应该是我接下来努力的方向。

最新文章

  1. db2 重启
  2. UITableViewCell左对齐的方法
  3. ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了
  4. BZOJ 3511 土地划分
  5. iPhone 微信平台链接到微信文章 返回上一页问题
  6. iOS 基础 第三天(0807)
  7. Ubuntu下安装php调试工具xdebug
  8. CI框架篇之基础篇(1)
  9. 单线程JavaScript
  10. 初识 Javascript.02 -- Date日期、Math对象、数据类型转换、字符串、布尔Boolean、逻辑运算符、if else 、三元表达式、代码调试方法、
  11. Postgres中的物化节点之sort节点
  12. 跟我一起学JQuery插件开发教程
  13. java实现:将一个数各个位数相加
  14. Hive篇---Hive使用优化
  15. C# .NET MODEL 复制,实体类复制
  16. 移动APP测试入手点
  17. Tomcat服务的安装与配置
  18. CentOS7 下 keepalived 的安装和配置
  19. Linux——vi的使用
  20. SSM整合的配置文件

热门文章

  1. UIColletionView 的属性与常用方法介绍
  2. BZOJ3456: 城市规划
  3. js 图片处理 Jcrop.js API
  4. vsfptd
  5. Bouncy Castle内存溢出
  6. 20145330《Java程序设计》第四周学习总结
  7. C# 非模式窗体show()和模式窗体showdialog()的区别(转)
  8. Js实现MD5加密
  9. ListView的HeaderView和Footer
  10. iPhone6分辨率与适配