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<TreeNode> curLevelNodes = new ArrayList<TreeNode>();
        curLevelNodes.add(root);
        int level = 0;
        while(!curLevelNodes.isEmpty()){
             level++;
             List<TreeNode> nextLevelNodes = new ArrayList<TreeNode>();
             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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容