• 算法-二叉树-简单-二叉树的最大和最小深度


    记录一下算法题的学习7

    二叉树的最大深度

    题目:给定一个二叉树 root ,返回其最大深度。

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

    输入:root = [3,9,20,null,null,15,7]
    输出:3

    示例分析:

    这里根节点为3,叶子节点是什么呢?---->是指没有子节点的节点,记录从根节点到最远叶子节点的最长路径上的节点数,那么就是3-20-15,或者3-20-7,一共是3个节点数

    怎么体现呢?

    深度优先搜索代码展示:

    1. class Solution {
    2. public int maxDepth(TreeNode root) {
    3. //首先输入根节点为空的情况下,二叉树就不存在
    4. if(root==null){
    5. return 0;
    6. }
    7. //判断输入根节点不为空,存在二叉树
    8. else{
    9. int leftDepth=maxDepth(root.left); //得到根节点root左子树的最长路径上的节点数
    10. int rightDepth=maxDepth(root.right);//得到根节点root右子树的最长路径上的节点数
    11. return Math.max(leftDepth,rightDepth)+1;//由题目可知,还需加上代表根节点的节点数1
    12. }
    13. }
    14. }

    广度优先搜索代码展示:

    这里进行回忆记录Queue?

    • Queue是java中实现队列的接口,它总共有6个方法,我们一般只用其中3个就可以了。
    • Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。

    方法

    作用区别

    add()

    压入元素(添加)相同:未超出容量,从队尾压入元素,返回压入的那个元素。
    区别:在超出容量时,add()方法会对抛出异常,offer()返回false
    offer()压入元素(添加)
    remove()弹出元素(删除)相同:容量大于0的时候,删除并返回队头被删除的那个元素。
    区别:在容量为0的时候,remove()会抛出异常,poll()返回false
    poll()弹出元素(删除)
    element()获取对头元素相同:容量大于0的时候,都返回队头元素。但是不删除。
    区别:容量为0的时候,element()会抛出异常,peek()返回null。
    peek()获取对头元素
    1. class Solution {
    2. public int maxDepth(TreeNode root) {
    3. //首先输入根节点为空的情况下,二叉树就不存在
    4. if(root==null){
    5. return 0;
    6. }
    7. Queue<TreeNode> queue=new LinkedList<>();//初始化队列queue
    8. queue.offer(root);//将根节点加入队列中
    9. int result=0;//初始化结果
    10. while(!queue.isEmpty()){ //队列不为空的情况,即刚才加入的根节点!=null
    11. int size=queue.size();//取出当前队列的长度
    12. while(size-->0){//取出相同数量的节点数进行遍历
    13. TreeNode node=queue.poll();
    14. if(node.left!=null){
    15. queue.offer(node.left);
    16. }
    17. if(node.right!=null){
    18. queue.offer(node.right);
    19. }
    20. }
    21. result++;
    22. }
    23. return result;
    24. }
    25. }

    二叉树的最小深度

    题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    输入:root = [3,9,20,null,null,15,7]
    输出:2
    
    输入:root = [2,null,3,null,4,null,5,null,6]
    输出:5
    

    示例分析:

    如果我们直接将二叉树的最大深度的代码,直接拿来用,就会报错,因为我们忽略了还有一种情况(左孩子和右孩子有一个为空的情况,但不确定是哪一个,我们返回leftDepth+rightDepth+1)在求二叉树的最小深度中。

     深度优先搜索代码展示:

    1. class Solution {
    2. public int minDepth(TreeNode root) {
    3. //首先输入根节点为空的情况下,二叉树就不存在
    4. if(root==null){
    5. return 0;
    6. }
    7. //1.左孩子和右孩子都为空的情况,说明到达了叶子节点,直接返回1
    8. if(root.left == null && root.right == null){
    9. return 1;
    10. }
    11. int leftDepth=minDepth(root.left); //得到根节点root左子树的最短路径上的节点数
    12. int rightDepth=minDepth(root.right);//得到根节点root右子树的最短路径上的节点数
    13. //2.左孩子和右孩子有一个为空的情况,但不确定是哪一个,我们返回leftLength+rightLength+1
    14. if(root.left == null || root.right == null){
    15. return leftDepth+rightDepth+1;
    16. //3 左孩子和右孩子都不为空的情况,那就比较出两者之间更小的值,然后再加一,得到最小深度
    17. }else{
    18. return Math.min(leftDepth,rightDepth)+1;//由题目可知,还需加上代表根节点的节点数1
    19. }
    20. }
    21. }

    广度优先搜素代码展示:

    1. class Solution {
    2. public int minDepth(TreeNode root) {
    3. //首先输入根节点为空的情况下,二叉树就不存在
    4. if(root==null){
    5. return 0;
    6. }
    7. Queue queue = new LinkedList<>();
    8. queue.offer(root);
    9. int result=1;
    10. while (!queue.isEmpty()) {
    11. int size=queue.size();
    12. for(int i=0;i
    13. TreeNode node =queue.poll();
    14. if (node.left == null && node.right == null) {
    15. return result;
    16. }
    17. if (node.left != null) {
    18. queue.offer(node.left);
    19. }
    20. if (node.right != null) {
    21. queue.offer(node.right);
    22. }
    23. }
    24. result++;
    25. }
    26. return result;
    27. }
    28. }

    注意这里必须这样写

    不能直接写成for(int i=0;ifor(int i=queue.size()-1;i>=0;i--)。

     

  • 相关阅读:
    棱镜七彩受邀参加“数字政府建设暨数字安全技术研讨会”
    『heqingchun-ubuntu系统下Qt报错connot find -lGL解决方法』
    算法基础-数学知识-欧拉函数、快速幂、扩展欧几里德、中国剩余定理
    基于GPTs个性化定制SCI论文专业翻译器
    TiDB v6.2 发版
    【C语言】栈和队列的相互实现
    HashMap
    图像文本跨模态细粒度语义对齐-置信度校正机制 AAAI2022
    原码、反码、补码,Java中byte类型的‘-128‘对应的二进制是什么。
    Karl Guttag:我在AWE 2022体验到了哪些有意思的AR眼镜
  • 原文地址:https://blog.csdn.net/yangkeOK/article/details/134500128