minimum-depth-of-binary-tree
来源:互联网 发布:蓝月翅膀升级数据 编辑:程序博客网 时间:2024/06/07 11:56
leetcode上的一道题:minimum-depth-of-binary-tree
问题描述: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.
大意:给定一棵二叉树,求此二叉树的最小深度。这个最小深度的意思就是,最小深度是从根节点到最近叶节点的最短路径的节点数。
比较常规的思路分别是DFS和BFS,从算法的效率上来讲效率比较高的应该是BFS.
DFS思路:用递归的方式来求出到达叶子节点所需要的节点数,从中选择最小的,这种方式要遍历所有的叶子节点,从效率上来讲比较低效。
BFS思路:采用层次遍历的方式当到达第一个叶子节点的时候就停止BFS此时的层数就是最小深度。效率较高。
下面是DFS代码:
class Solution {public: int run(TreeNode *root) { if(root==nullptr) return 0; else if(root->left==nullptr&&root->right==nullptr) return 1; else{ if(root->left==nullptr) return run(root->right)+1; else if(root->right==nullptr) return run(root->left)+1; else{ int lf=run(root->left)+1; int rh=run(root->right)+1; return min(lf,rh); } } } };
下面是BFS代码:
class Solution {public: int run(TreeNode *root) { if(root==nullptr) return 0; else{ queue<TreeNode *> que; que.push(root); int deepth=0;//记录深度 int num=1;//记录每一层的节点数 bool flag=true; while(!que.empty()&&flag){ int _num=0; for(int i=0;i<num;i++){ TreeNode * temp=que.front(); que.pop(); if(temp->left==nullptr&&temp->right==nullptr){ flag=false; break; } if(temp->left!=nullptr){ que.push(temp->left); _num++; } if(temp->right!=nullptr){ que.push(temp->right); _num++; } } num=_num; deepth++; } return deepth; } }
阅读全文
0 0
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree
- QNX学习笔记——IPC(5)
- P
- 如何设置jvm内存
- FatMouse and Cheese(记忆化搜索)
- linux 如何清理僵尸进程
- minimum-depth-of-binary-tree
- 通知栏通知,及点击跳转(广播实现)
- 《算法导论》第四章-思考题(参考答案)
- QNX手册学习笔记————中断机制
- TensorFlow手写汉字识别
- python numpy
- http协议几种数据传输方式
- JavaScript HTML DOM 事件机制,常用方法
- R