[LeetCode]111. Minimum Depth of Binary Tree--二叉树的最小深度
来源:互联网 发布:老网络歌曲大全 编辑:程序博客网 时间:2024/05/19 23:11
111. 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.
分析:注意此题必须要找到一个离root结点最近的叶节点,是根结点到叶结点!
举两个简单的测试用例:
1. 单结点的树,结果应该是1,因为只有1个结点,既是根节点,也是叶结点
2. [a,b] 是只有两个结点的树,结果应该是2,而不是1,因为a不是叶节点,b才是叶节点
/* 解法一:深度优先遍历 * * 时间复杂度:O(n),空间复杂度:O(lgn) *//** * 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 minDepth(TreeNode* root) { // 空树直接返回0 if(root == NULL) return 0; // 左子树为空,则左子树不可能含有叶节点,只能在右子树中查找叶节点 if(root->left == NULL) return 1 + minDepth(root->right); // 如果右子树为空,则右子树不可能含有叶节点,只能在左子树中查找叶节点 if(root->right == NULL) return 1 + minDepth(root->left); // 如果左右子树都不为空 return 1 + min(minDepth(root->left), minDepth(root->right)); }};
/** * 迭代版本 *//** * 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 minDepth(TreeNode* root) { if (root == nullptr) return 0; int result = INT_MAX; stack<pair<TreeNode*, int>> s; s.push(make_pair(root, 1)); while (!s.empty()) { auto node = s.top().first; auto depth = s.top().second; s.pop(); if (node->left == nullptr && node->right == nullptr) result = min(result, depth); if (node->left && result > depth) s.push(make_pair(node->left, depth + 1)); if (node->right && result > depth) s.push(make_pair(node->right, depth + 1)); } return result; }};
阅读全文
0 0
- LeetCode Minimum Depth of Binary Tree 最小深度二叉树
- Leetcode Minimum Depth of Binary Tree 二叉树最小深度
- LeetCode:minimum-depth-of-binary-tree(二叉树最小深度)
- [LeetCode]111. Minimum Depth of Binary Tree--二叉树的最小深度
- Minimum Depth of Binary Tree 二叉树的最小深度
- Minimum Depth of Binary Tree 二叉树的最小深度
- Minimum Depth of Binary Tree 二叉树的最小深度
- LeetCode OJ 之 Minimum Depth of Binary Tree(二叉树的最小深度)
- [Java代码] [Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度
- 【LeetCode】Minimum Depth Of Binary Tree二叉树的最小深度
- leetCode 111.Minimum Depth of Binary Tree(二叉树最小深度) 解题思路和方法
- LeetCode 111. Minimum Depth of Binary Tree(二叉树最小深度)
- Leetcode 111. Minimum Depth of Binary Tree 二叉树最小深度
- Minimum Depth of Binary Tree 二叉树最小深度
- lintcode minimum-depth-of-binary-tree 二叉树最小深度
- 111. Minimum Depth of Binary Tree 二叉树的最小深度
- 111. Minimum Depth of Binary Tree 二叉树的最小深度
- Minimum Depth of Binary Tree 求二叉树最小高度/深度@LeetCode
- hdu6063
- 【计算机基础】程序数据的5种存储位置(堆与栈) (转载)
- 并查集
- 数据库中间件mycat实现数据库读写分离
- B
- [LeetCode]111. Minimum Depth of Binary Tree--二叉树的最小深度
- 设计模式(23种)
- 浅谈box-sizeing,以及chrome firfox 以及ie的区别
- js中checkbox中的全选和反选效果实现
- Java多线程基础--09之 interrupt()和线程终止方式
- 面向网络编程
- LeetCode OJ 543 Diameter of Binary Tree [Easy]
- HDU-畅通工程
- 【ActiveMQ】认识ActiveMQ