111. Minimum Depth of Binary Tree

题目:111. 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.

1,递归
思路:根据二叉树递归的定义
public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        
        if(root.left != null && root.right != null){
            return Math.min(minDepth(root.left),minDepth(root.right)) + 1;
        }
        
        if(root.left == null && root.right == null){
            return 1;
        }
        
        if(root.left != null && root.right == null){
            return minDepth(root.left) + 1;
        }
        
        return minDepth(root.right) + 1;
    }

2,非递归

思路:利用层次遍历, 在对每一层进行遍历的时候,第一次叶子节点出现的层数就是二叉树的最小高度
 public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        
        List curLevelNodes = new ArrayList();
        curLevelNodes.add(root);
        int level = 0;
        while(!curLevelNodes.isEmpty()){
             level++;
             List nextLevelNodes = new ArrayList();
             for(TreeNode node : curLevelNodes){
                 //按层遍历,第一个出现的叶子节点就是该二叉树最低的高度
                 if(node.left == null && node.right == null){
                     return level;
                 }
                 
                 if(node.left != null){
                     nextLevelNodes.add(node.left);
                 }
                 if(node.right != null){
                     nextLevelNodes.add(node.right);
                 }
             }
            curLevelNodes = nextLevelNodes;
        }
        return level;
    }

你可能感兴趣的:(111. Minimum Depth of Binary Tree)