LeetCode 111. Minimum Depth of Binary Tree(二叉树最小深度)
来源:互联网 发布:大数据徐子沛 编辑:程序博客网 时间:2024/06/05 23:49
原题网址:https://leetcode.com/problems/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.
方法:递归,自底向上。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int minDepth(TreeNode root) { if (root == null) return 0; if (root.left == null && root.right == null) return 1; if (root.left == null) return minDepth(root.right) + 1; if (root.right == null) return minDepth(root.left) + 1; return Math.min(minDepth(root.left), minDepth(root.right)) + 1; }}
方法二:用栈来模拟递归。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public int minDepth(TreeNode root) { if (root == null) return 0; Stack<Input> inputs = new Stack<>(); Stack<Integer> outputs = new Stack<>(); inputs.push(new Input(root, 0)); while (!inputs.isEmpty()) { Input input = inputs.pop(); if (input.state == 0) { if (input.root == null) { outputs.push(0); continue; } else if (input.root.left == null && input.root.right == null) { outputs.push(1); continue; } else if (input.root.left == null) { input.state = 1; inputs.push(input); inputs.push(new Input(input.root.right, 0)); continue; } else if (input.root.right == null) { input.state = 1; inputs.push(input); inputs.push(new Input(input.root.left, 0)); continue; } else { input.state = 2; inputs.push(input); inputs.push(new Input(input.root.left, 0)); continue; } } else if (input.state == 1) { Integer output = outputs.pop(); output ++; outputs.push(output); continue; } else if (input.state == 2) { input.value = outputs.pop(); input.state = 3; inputs.push(input); inputs.push(new Input(input.root.right, 0)); continue; } else if (input.state == 3) { Integer right = outputs.pop(); Integer output = Math.min(input.value, right) + 1; outputs.push(output); continue; } } return outputs.pop(); }}class Input { TreeNode root; int state; Input(TreeNode root, int state) { this.root = root; this.state = state; } int value;}
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(二叉树最小深度)
- leetCode 111.Minimum Depth of Binary Tree(二叉树最小深度) 解题思路和方法
- Leetcode 111. Minimum Depth of Binary Tree 二叉树最小深度
- [LeetCode]111. Minimum Depth of Binary Tree--二叉树的最小深度
- LeetCode OJ 之 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 二叉树的最小深度
- Minimum Depth of Binary Tree 二叉树的最小深度
- lintcode minimum-depth-of-binary-tree 二叉树最小深度
- 111. Minimum Depth of Binary Tree (计算二叉树最小深度)
- Minimum Depth of Binary Tree 求二叉树最小高度/深度@LeetCode
- [Java代码] [Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度
- 【LeetCode】Minimum Depth Of Binary Tree二叉树的最小深度
- LeetCode 108. Convert Sorted Array to Binary Search Tree(数组转换为二叉搜索树)
- LeetCode 109. Convert Sorted List to Binary Search Tree(链表到二叉搜索树)
- leetcode #24 in cpp
- Leetcode 133. Clone Graph & 138. Copy List with Random Pointer
- LeetCode 110. Balanced Binary Tree(平衡二叉树)
- LeetCode 111. Minimum Depth of Binary Tree(二叉树最小深度)
- LeetCode 112. Path Sum(路径和)
- 软件架构设计原则和模式(上):分层架构设计
- 最新的版的PostgresSQL引入了BRIN索引
- LeetCode 113. Path Sum II(路径和)
- LeetCode 114. Flatten Binary Tree to Linked List(摊平二叉树)
- WindowBuilder的离线安装与使用
- git使用命令
- apache结合svn笔记