【leetcode每日一题】104.Maximum Depth of Binary Tree
2015-09-09 20:02
337 查看
题目:
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.
即是求一课二叉树的深度。
解析:
方法一:用递归方法做,代码如下:
方法二:非遍历方法,用队列来做。类似于广度遍历的方法,把二叉树节点按层压入队列中。没遍历完一层,则树的高度就加一。代码如下:
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.
即是求一课二叉树的深度。
解析:
方法一:用递归方法做,代码如下:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDepth(TreeNode *root) { if (root==NULL) return 0; int l=maxDepth(root->left); int r=maxDepth(root->right); return l>r?l+1:r+1; } };
方法二:非遍历方法,用队列来做。类似于广度遍历的方法,把二叉树节点按层压入队列中。没遍历完一层,则树的高度就加一。代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxDepth(TreeNode* root) { if(root==NULL) { return 0; } queue<TreeNode *> nodes; int height=0; nodes.push(root); TreeNode *temp; int size=1; while(!nodes.empty()) { size--; temp=nodes.front(); nodes.pop(); if(temp->left!=NULL) { nodes.push(temp->left); } if(temp->right!=NULL) { nodes.push(temp->right); } if(size==0) { size=nodes.size(); height++; } } return height; } };
相关文章推荐
- CentOS用DD镜像及恢复过程
- 三步搞定浏览器
- 在Unity3D中控制动画播放
- 按时间排序返回前十条数据且不重复
- leetcode9 Palindrome Number
- 网站性能优化
- ARC,MRC理解
- 屌屌的Web树--保存分类
- 写一个网络图片查看器
- 神经网络
- Qt5 中使用了QQuickWidget,程序退出时容易崩溃的解决办法。
- lesson3 -Vim
- 引导页的铺设
- Java简单彩票系统(35选7)
- HDU-2732 Leapin's Lizards
- 使用分布式数据库集群做大数据分析之OneProxy
- button初始化类目
- lesson2 -basic Linux tasks
- 哈哈 一个小程序
- HDU 5024(枚举+搜索/记忆化搜索)