zoukankan      html  css  js  c++  java
  • 二叉树的深度

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14102478.html

    二叉树的深度

    题目链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/submissions/

    题目

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

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

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定二叉树 [3,9,20,null,null,15,7],

    3
    /
    9 20
    /
    15 7
    返回它的最大深度 3 。

    题解

    思路1:

            按照前面做过的前中后序遍历,可以进行层次遍历,然后判断层次遍历中有多少层,就可以计算出二叉树的深度是多少了。

    思路2:

          按照前面写的,也可以利用递归来实现计算二叉树的深度,这里主要说前序遍历的递归思想,先回忆一下前序遍历递归思想,先遍历根,在遍历左子树,然后遍历右子树,然后递归遍历左子树中的左右子树,右子树中的左右子树,在计算最大深度时,在返回根节点的最大深度时,是通过取左子树和右子树中较大深度的数加1则是根节点的最大深度。

    方法1:

    先写上层次遍历的模板,然后计算有多少层即为二叉树的最大深度。

    代码1

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

    结果1

     

    方法2:

    先把树的前序遍历递归方法写上,通过修改代码,取左右子树中较大的值,并且加1作为返回结果。

    代码2

    class Solution {
        public int maxDepth(TreeNode root) {
            if(root==null)
                return 0;
            int count=0;
           
            return  pre(root,count);
        }
        public int pre(TreeNode root,int count){
            if(root==null)
                 return 0;
            count=Math.max(pre(root.left,count),pre(root.right,count))+1;
            return count;
           
        }
    }

    结果2

          

  • 相关阅读:
    204. 计数质数
    236. 二叉树的最近公共祖先
    优先队列和哈夫曼树
    185. 部门工资前三高的所有员工(求组内前几的值)
    部门工资最高的员工(求组内最大值)
    回调函数的案例
    单链表
    动态数组
    一致性哈希算法的基本原理
    只用2GB内存在20亿个整数中找到出现次数最多的数
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14102478.html
Copyright © 2011-2022 走看看