Minimum Depth of Binary Tree

来源:互联网 发布:javascript 是什么 编辑:程序博客网 时间:2024/05/22 17:44

Recursive

/** * 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;        }        return getMin(root);    }    private int getMin(TreeNode node) {        if (node == null) {            return Integer.MAX_VALUE;        }        if (node.left == null && node.right == null) {            return 1;        }        return Math.min(getMin(node.left), getMin(node.right)) + 1;    }}

Iterative

/** * 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) {        int height = 0;        if (root == null) {            return height;        }        height++;        Queue<TreeNode> currentLevel = new LinkedList<TreeNode>();        Queue<TreeNode> nextLevel = new LinkedList<TreeNode>();        Queue<TreeNode> temp;        currentLevel.offer(root);        while (true) {            while (!currentLevel.isEmpty()) {                TreeNode node = currentLevel.poll();                if (node.left == null && node.right == null) {                    return height;                }                if (node.left != null) {                    nextLevel.offer(node.left);                }                if (node.right != null) {                    nextLevel.offer(node.right);                }            }            height++;            temp = currentLevel;            currentLevel = nextLevel;            nextLevel = temp;        }    }}



0 0
原创粉丝点击