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

代码随想录刷题学习日记

时间:2024-10-30 14:47:21浏览次数:3  
标签:right return int res 随想录 left root 日记 刷题

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

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

222.完全二叉树的节点个数

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

提供参数:根结点root

主要操作:遍历所有节点,记录节点数。

代码(递归法)大致如下:

    public int countNodes(TreeNode root) {
        if(root==null)return 0;
        int res;
        int left=countNodes(root.left);
        int right=countNodes(root.right);
        res=left+right+1;
        return res;
    }

110.平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

提供参数:根结点root

主要操作:

递归三要素

1.返回值类型和提供参数:

以int作为返回值类型,-1标记高度不平衡,不为-1则说明高度平衡,提供参数为根结点root

2.终止条件:

如果节点为空,返回0

3.单层逻辑:

获取左子树高度,如果为-1直接返回-1

获取右子树高度,如果为-1直接返回-1

计算左右子树高度绝对值,如果大于1,直接返回-1

如果不大于1,返回该结点高度(1+子树高度更大的高度)

通过递归函数的返回值来判断,如果为-1则返回false,如果不为-1则返回true

代码大致如下:

    public boolean isBalanced(TreeNode root) {
        if(root==null)return true;
        int res=getheight(root);
        if(res==-1)return false;
        else return true;        
    }
    public int getheight(TreeNode root){
        if(root==null)return 0;

        int left=getheight(root.left);
        if(left==-1)return -1;
        int right=getheight(root.right);
        if(right==-1)return -1;

        int res=0;
        if(Math.abs(left-right)>1)return -1;
        else{
            res=1+Math.max(left,right);
            return res;
        }
    }

标签:right,return,int,res,随想录,left,root,日记,刷题
From: https://blog.csdn.net/weixin_73939095/article/details/143364502

相关文章

  • 代码随想录算法训练营第十三天
    1二叉树的理论基础文章链接:代码随想录视频链接:关于二叉树,你该了解这些!|二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序_哔哩哔哩_bilibili1.1二叉树的种类满二叉树所有节点处的值都排满了,没有空的完全二叉树只有在最后一......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词哔哩哔哩bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......
  • 代码随想录——栈与队列8-前K个高频元素
    法一、用数组排序思路用map保存元素和频率关系将元素和频率的键值对pair作为vector的基本元素,以频率为准进行从大到小的排序——O(nlogn)输出前K个pair的first,即数字本身代码classSolution{public:std::vector<int>topKFrequent(std::vector<int......
  • 软考刷题记录5
    在程序的执行过程中,Cache与主存的地址映射是由()完成的。A.操作系统B.程序员调度C.硬件自动D.用户软件【正确答案】:C计算机运行过程中,CPU需要与外设进行数据交换。采用()控制技术时,CPU与外设可并行工作。A.程序查询方式和中断方式B.中断方式和DMA方式C.程序查询方......
  • BUUCTF pwn学习日记
    我是纯新手,零基础的开始学Pwn喽时间:2024年10月29日BUUCTFPwn学习日记1.test_your_nc下载附件,用IDA打开发现直接nc就可以获得flagcatflag得到flag{07c0b69c-dcbf-4991-8cc6-05660b1a2dd2}2.ripIDA打开发现没有看见有用信息,Shift+F12发现了/bin/sh初步怀疑是栈溢......
  • 代码随想录算法训练营day30| 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.
    学习资料:https://programmercarl.com/0452.用最少数量的箭引爆气球.html重叠区域问题最远位置问题452.用最少数量的箭引爆气球(重叠区域;按左边界排序;i区间的左边界与i-1区间的右边界比较来确定是否重叠;更新i的右边界,取i与i-1区域右边界的最小值)点击查看代码classSolution(ob......
  • 代码随想录一刷-day3
    T209长度最小子数组核心:滑动窗口思想,如何用一个for循环达到两个循环的效果for(intj=0;j<num.size();j++){sum+=nums[j];//外层for循环内负责将窗口结束的坐标++;while(sum>=target){window_length=j-i+1;result=min(result,window_length);sum-=nums[i++];......
  • 代码随想录day14 二叉树(2)
    文章目录day11栈与队列(2)栈与队列的总结day13二叉树(1)day14二叉树(2)day11栈与队列(2)逆波兰表达式求值https://leetcode.cn/problems/evaluate-reverse-polish-notation/逆波兰表达式,也就是后缀表达式,所谓后缀就是指运算符写在后面。平常使用的算式则是一种......
  • 算法刷题记录(day5)
    LC160.相交链表题目描述:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。classSolution{public:ListNode*getIntersectionNode(ListNode*headA,ListNode*headB){if(head......
  • 代码随想录-栈与队列6、7
    逆波兰表达式思路用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中这里记录string类型相关操作:判断token是否是数字,不可像char类型用string重载的>=,<=,前者由于用ASCII码表示,后者按字典序比较,例如1<2所以字符串比较"10"<"2"。所以直接......