递归求取二叉树最小深度和最大深度

public class Binarytreedept {
/*
 * 输出二叉树最小深度   
 * 核心思想:根节点到达最近的叶子节点的路径长度。
 * 1、当根为空时,输出0。
 * 2、当左子树为空时,输出右子树深度+1。
 * 3、当右子树为空时,输出左子树深度+1。
 * 4、以上条件都不满足时,输出min(左子树深度,右子树深度)+1。
 * 
 * 输出二叉树最大深度 
 * 核心思想:根节点到达最远的叶子节点的路径长度。
 * 1、如果二叉树为空,则深度为0;
 * 2、如果不为空,分别求左子树的深度和右子树的深度,取较大值加1,因为根节点深度是1。
 */
    public static int minDepth(BiTreeNode root) {
        //如果二叉树为空,返回0;
        if(root == null)
            return 0; 
        //如果二叉树左子树为空,返回右子树深度;
        if(root.lchild == null) 
        return minDepth(root.rchild) + 1;
        //如果二叉树右子树为空,返回左子树深度;
        if(root.rchild == null) 
        return minDepth(root.lchild) + 1;
        //如果二叉树左右子树均不为为空,返回左右子树深度的较小值;
        int leftDepth = minDepth(root.lchild);
        int rightDepth = minDepth(root.rchild);
        return leftDepth < rightDepth ? (leftDepth + 1) : (rightDepth + 1);
    }
    public static int maxDepth(BiTreeNode root) {
        //如果二叉树为空,返回0;        
        if(root == null)
            return 0;
        //否则返回二叉树左右子树深度较大值;  
        int leftDepth = maxDepth(root.lchild);
        int rightDepth = maxDepth(root.rchild);
        return leftDepth > rightDepth ? (leftDepth + 1) : (rightDepth + 1);
    }
}
时间: 2024-11-02 15:47:46

递归求取二叉树最小深度和最大深度的相关文章

求树的最小深度

/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private int mins=10000; public int minDepth(TreeNode root) { if(root==null) return

Minimum Depth of Binary Tree,求树的最小深度

算法分析:递归和非递归两种方法. public class MinimumDepthofBinaryTree { //递归,树的最小深度,就是它左右子树的最小深度的最小值+1 public int minDepth(TreeNode root) { if(root == null) { return 0; } int lmin = minDepth(root.left); int rmin = minDepth(root.right); if(lmin == 0 && rmin == 0)

求一个二叉树的深度

求一个二叉树的深度,是这样理解这个问题的. 如果这个棵树为空,那么他的深度为0 如果一个树只有一个节点,那么他的深度为1 如果根节点只有左子,没有右子,那么他的深度为左子树的深度+1 如果根节点只有右子,没有左子,那么他的深度为右子树的深度+1 如果根节点既有左子,又有右子,那么他的深度为左子右子较大的那个深度+1 struct BNode { int data;   //数据域 BNode* left;//左子 BNode* right;//右子} int TreeDepth(BNode* n

【JAVA】【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. 思路: 两种方法: 第一,使用递归,相当于遍历了整个二叉树,递归返回深度浅的那棵子树的深度. 第二,按层检查

LinCode 刷题 之二叉树最小深度

http://www.lintcode.com/zh-cn/problem/minimum-depth-of-binary-tree/  题目描述信息 二叉树的结构定义如下: /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.lef

求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树

/** * Created by Administrator on 2015/10/10. */public class TreeNode { //树节点的值 private char data; //节点的左子树 private TreeNode leftTree; //节点的右子树 private TreeNode rightTree; public TreeNode(char data,TreeNode leftTree,TreeNode rightTree){ this.data=dat

递归的应用--求二叉树最大深度和最小深度

[求最大深度]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. 这里说的最大深度是指最深叶子节点到根节点的路径长度 <span style="font-size:18px;"> public static i

155 二叉树的最小深度

原题网址:https://www.lintcode.com/problem/minimum-depth-of-binary-tree/description 描述 给定一个二叉树,找出其最小深度. 二叉树的最小深度为根节点到最近叶子节点的距离. 您在真实的面试中是否遇到过这个题?  是 样例 给出一棵如下的二叉树: 1 /     \ 2       3 /    \ 4      5 这个二叉树的最小深度为 2 标签 二叉树 Depth-first Search(DFS) 思路:可参照二叉树的

【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】

[111-Minimum Depth of Binary Tree(二叉树的最小深度)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 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. 题目大意 给定