首页 > 其他分享 >代码随想录刷题学习日记

代码随想录刷题学习日记

时间:2024-11-04 20:19:01浏览次数:6  
标签:right int 随想录 节点 深度 null root 日记 刷题

仅为个人记录复盘学习历程,解题思路来自代码随想录

代码随想录刷题笔记总结网址:
代码随想录

559.n叉树的最大深度(层序遍历法)

给定一个 n 叉树,找到其最大深度。

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

提供参数:根结点root

关键思路:和二叉树的层序遍历找最大深度一样,不再赘述。

代码大致如下:

    public int maxDepth(Node root) {
        //
        int dep=0;
        Queue<Node>queue=new LinkedList<>();
        if(root==null)return dep;
        queue.offer(root);
        while(!queue.isEmpty()){
            int len=queue.size();
            dep++;
            for(int i=0;i<len;i++){
                Node node=queue.poll();
                for(Node child:node.children){
                    if(child!=null)queue.offer(child);
                }
            }

        }
        return dep;
        
    }

111.二叉树的最小深度(递归法)

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

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

二叉树的深度:从根结点到该结点路径上的节点数

二叉树的高度:指从该节点到叶子节点的最长简单路径上的节点数

提供参数:根结点root

主要操作:

递归三要素

1.参数和返回值类型:

返回深度int型,参数为根结点root

2.判断终止条件:

如果访问到空节点,返回深度为0

3.单次递归逻辑:

获取左子树深度;

获取右子树深度;

排除左右一棵子树为空,一颗不为空的情况:

左边为空,返回右子树深度+1

右边为空,返回左子树深度+1

返回左右子树深度的较小值+1

代码大致如下:

public int minDepth(TreeNode root) {
        //递归
        //终止条件
        if(root==null)return 0;
        //单层逻辑,后续遍历
        int left=minDepth(root.left);
        int right=minDepth(root.right);

        //左子树为空,右子树不为空
        if(root.left==null&&root.right!=null)return 1+right;
        if(root.right==null&&root.left!=null)return 1+left;

        //右子树为空,左子树不为空

        int res=Math.min(left,right);
        return 1+res;
    }

标签:right,int,随想录,节点,深度,null,root,日记,刷题
From: https://blog.csdn.net/weixin_73939095/article/details/143326634

相关文章

  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录递归函数什么时候需要返回值?什么时候不需要返回值?如果需要搜索整棵二叉树且不用处理递归返回值,递归函数就不要返回值。如果需要搜索整棵二叉树且需要处理递归返回值,递归函数就需要返......
  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录654.最大二叉树给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右......
  • 代码随想录第四天|链表part02--24. 两两交换链表中的节点、19.删除链表的倒数第N个节
    资源引用:leetcode题目:24.两两交换链表中的节点(24.两两交换链表中的节点-力扣(LeetCode))19.删除链表的倒数第N个结点(19.删除链表的倒数第N个结点-力扣(LeetCode))面试题02.07.链表相交(面试题02.07.链表相交-力扣(LeetCode))142.环形链表Ⅱ(142.环形链表II-力扣(Leet......
  • 代码随想录第十八天
    530.二叉搜索树的最小绝对差给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。示例1:输入:root=[4,2,6,1,3]输出:1示例2:输入:root=[1,0,48,null,null,12,49]输出:1提示:树中节点的数目范......
  • 代码随想录第十七天
    654.最大二叉树给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。返回nums构建的*最大......
  • 代码随想录算法训练营第十一天|leetcode150. 逆波兰表达式求值、leetcode239. 滑动窗
    1leetcode150.逆波兰表达式求值题目链接:150.逆波兰表达式求值-力扣(LeetCode)文章链接:代码随想录视频链接:栈的最后表演!|LeetCode:150.逆波兰表达式求值哔哩哔哩bilibili自己的思路:这是一道有思路,但是思路并不多的题目,就是我会觉得是先将数据进行添加,然后对于符号通过......
  • 代码随想录算法训练营第十五天|leetcode110. 平衡二叉树、leetcode257.二叉树的所有路
    1leetcode110.平衡二叉树题目链接:110.平衡二叉树-力扣(LeetCode)文章链接:代码随想录视频链接:后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树_哔哩哔哩_bilibili1.1视频看后的思路1.1.1完整的代码就是不断判断,对其数据存储,其实突然发现每道题思路真的都很像,就......
  • [Python学习日记-60] 什么是面向对象的程序设计
    [Python学习日记-60]什么是面向对象的程序设计简介编程范式面向过程编程面向对象编程简介    前面我们学习了Python中的语法、数据类型、函数之类的一系列相关知识,我们对Python的编程也比较了解了,甚至可以写一些脚本出来进行一些文件的过滤或者日志的生成......
  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录106.从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树,假设树中没有重复的元素。提供参数:中序遍历数组inorder,后序遍历数组postorder主要操作:递归三要素1......