【LeetCode】104. Maximum Depth of Binary Tree 解法及注释,递归,深度搜索
2016-04-15 17:46
477 查看
104. Maximum Depth of Binary Tree
Total
Accepted: 137961 Total
Submissions: 289093 Difficulty: Easy
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.
【分析】
这个题很简单,就是一个搜索问题,对二叉树进行遍历并记录最大深度即可解决问题,我用的是中序遍历,当然其它遍历也可解决问题。遍历的思路如是,代码的书写风格亦会影响效率,从提高扩展性的角度看,选择一种中序遍历是不错的,作为独立函数执行效率尚可。
【解法及注释】
方法一:递归遍历所有结点,记录最大深度
方法二:网上解法,效率不高
Total
Accepted: 137961 Total
Submissions: 289093 Difficulty: Easy
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.
【分析】
这个题很简单,就是一个搜索问题,对二叉树进行遍历并记录最大深度即可解决问题,我用的是中序遍历,当然其它遍历也可解决问题。遍历的思路如是,代码的书写风格亦会影响效率,从提高扩展性的角度看,选择一种中序遍历是不错的,作为独立函数执行效率尚可。
【解法及注释】
方法一:递归遍历所有结点,记录最大深度
class Solution { public: int maxDepth(TreeNode* root) { int maxdeep=0; DFS(root, 0, maxdeep); return maxdeep; } void DFS(TreeNode* root, int deepth,int &maxdeep) { if(root==NULL)return; if(deepth+1>maxdeep)maxdeep=deepth+1; DFS(root->left,deepth+1,maxdeep); DFS(root->right,deepth+1,maxdeep); } };
方法二:网上解法,效率不高
class Solution { public: int maxDepth(TreeNode *root) { if (root == NULL) return 0; TreeNode* left_node = root->left; TreeNode* right_node = root->right; int left_dep = maxDepth(left_node); int right_dep = maxDepth(right_node); return 1 + ((left_dep > right_dep) ? left_dep:right_dep); } };
相关文章推荐
- Spring AOP + Redis缓存数据库查询
- Linux Shell变量
- node.js(express)连接mongoDB入门指导
- 代码管理仓库项目任务计划
- android MonkeyRunner的使用
- 关于 dedecms 网站程序及数据库完美迁移的教程
- NYOJ14.会场安排问题
- important for 3d printer
- Objective-C之NSBundle
- easyui 初始加载时页面样式乱的解决方法
- 从堆栈到参数传递
- Ubuntu下eclipse按alt+/没有自动补全代码功能
- java持久层框架mybatis如何防止sql注入
- memcached真的过时了么
- iOS学习笔记28-系统服务(一)短信和邮件
- leetcode 235:Lowest Common Ancestor of a Binary Search Tree
- java小项目之成绩管理、排课软件、局域网聊天软件
- SQLiteOpenHelper使用及源码分析
- Git在Windows下搭建本地远程仓库及一些问题小结
- 团队作业--1