首页 > 其他分享 >代码随想录day17| 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数

代码随想录day17| 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数

时间:2023-03-02 22:33:27浏览次数:43  
标签:deque temp int 随想录 二叉树 深度 null root

二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

分析 层序遍历 每层depth++

class Solution {
    public int maxDepth(TreeNode root) {
        Deque<TreeNode> deque = new LinkedList<>();
        if(root==null) return 0;
        deque.offer(root);
        int res=0;
        while(!deque.isEmpty()){
            int len=deque.size();
            res++;
            while(len-->0){
                TreeNode temp = deque.poll();
                if(temp.left!=null) deque.offer(temp.left);
                if(temp.right!=null) deque.offer(temp.right);
            }
        }

        return res;
        
    }
}
//递归写法
class Solution {
    public int maxDepth(TreeNode root) {
        return max(root);
    }

    public int max(TreeNode root){
        if(root==null) return 0;

        int left = max(root.left)+1;
        int right = max(root.right)+1;

        return Math.max(left,right);
    }
}

二叉树的最小深度

给定一个二叉树,找出其最小深度。

分析 层序遍历 如果左右节点==null 说明可以return depth

class Solution {
    public int minDepth(TreeNode root) {
        Deque<TreeNode> deque = new LinkedList<>();
        if(root==null) return 0;
        deque.offer(root);
        int depth=0;
        while(!deque.isEmpty()){
            int len=deque.size();
            depth++;
            while(len-->0){
                TreeNode temp= deque.poll();
                if(temp.left==null&&temp.right==null)   return depth;
                if(temp.left!=null) deque.offer(temp.left);
                if(temp.right!=null) deque.offer(temp.right);
            }
        }


        return depth;
    }

完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

分析 遍历时 count++

//递归写法
class Solution {
    public int countNodes(TreeNode root) {
        if(root==null) return 0;

        return countNodes(root.left)+countNodes(root.right)+1;
    }
}
//迭代写法
class Solution {
    public int countNodes(TreeNode root) {
        if(root==null) return 0;
        Deque<TreeNode> deque=new LinkedList<>();
        deque.offer(root);
        int count=0;
        while(!deque.isEmpty()){
            int len = deque.size();
            while(len-->0){
                TreeNode temp=deque.poll();
                count++;
                if(temp.left!=null) deque.offer(temp.left);
                if(temp.right!=null) deque.offer(temp.right);
            }
        }
        return count;
    }
}

 

标签:deque,temp,int,随想录,二叉树,深度,null,root
From: https://www.cnblogs.com/Liu5419/p/17173835.html

相关文章