LeetCode-Minimum Depth of Binary Tree

来源:互联网 发布:java 创建服务 编辑:程序博客网 时间:2024/06/16 08:11

题目描述

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.
给一个二叉树,求二叉树的最小深度,即从根节点到最近的叶子节点的距离。

方法一:递归实现

class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) {        val = x;    }}/*思路:   递归,若为空树返回0;   若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)   若右子树为空,则返回左子树的最小深度+1;   若左右子树均不为空,则取左、右子树最小深度的较小值,+1; */public class Solution {    public int run(TreeNode root) {        if (root == null) {            return 0;        } else if (root.left == null) {            return run(root.right) + 1;        } else if (root.right == null) {            return run(root.left) + 1;        } else {            return Math.min(run(root.left), run(root.right))+1;        }    }}

方法二:树的层次遍历(使用队列

import java.util.LinkedList;import java.util.Queue;class TreeNode {    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) {        val = x;    }}/* 思路:层序遍历,找到第一个左右结点都为null的情况,就返回使用<<队列>>来保存每一层的节点 */public class Solution {    public int run(TreeNode root) {        if (root == null) {            return 0;        }        if(root.left==null&&root.right==null){            return 1;        }        Queue<TreeNode> queue = new LinkedList<TreeNode>();        queue.add(root);        int depth = 0;        while(!queue.isEmpty()){            depth++;            int len = queue.size();            for(int i=0;i<len;i++) {                TreeNode treeNode = queue.poll();                if(treeNode.left==null&&treeNode.right==null) {                    return depth;                }                if(treeNode.left!=null) {                    queue.add(treeNode.left);                }                if(treeNode.right!=null) {                    queue.add(treeNode.right);                }            }        }        return depth;    }}
原创粉丝点击