JAVAleetcode查找二叉树最小深度
Posted WMM2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVAleetcode查找二叉树最小深度相关的知识,希望对你有一定的参考价值。
题目: 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.
思路:
两种方法:
第一,使用递归,相当于遍历了整个二叉树,递归返回深度浅的那棵子树的深度。
第二,按层检查有没有叶子节点,有的话停止检查,返回当前层数。至于实现这个按层检查,可以用递归的方法。该法不用遍历整个树。
--来自于牛客426550号
由于我本人只想到第一种办法,看到牛客友人牛客426550号给的思路觉得考虑的比较周全,所以就在此引用一下。谢谢!
递归要分清楚几种情况:
1、当根节点为空时,返回0
2、当只有左子节点(无右子节点)时,返回left+1
3、当只有右子节点(无左子节点)时,返回right+1
4、当左右子节点都存在时,分别计算左子树和右子树的深度,min(左子树最小深度,右子树最小深度)+1
public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } public class Solution { public int run(TreeNode root) { if(root!=null){ int left = Integer.MAX_VALUE; int right = Integer.MAX_VALUE; if(root.left!=null){ left = run(root.left); } if(root.right!=null){ right = run(root.right); } if(left<right){ return left+1; } else if(left>right){ return right+1; } else if(left==right&&left!=Integer.MAX_VALUE){ return left+1; } else return 1; } return 0; } }
以上是关于JAVAleetcode查找二叉树最小深度的主要内容,如果未能解决你的问题,请参考以下文章
javaleetcode105.从前序和中序遍历序列构造二叉树
代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数