二叉树递归笔记

二叉树递归笔记

1.平衡二叉树定义:

左子树是平衡二叉树,右子树是平衡二叉树。Math.abs(左子树的高度-右子树的高度)<1

2.二叉搜索树定义:

根节点>左子树的最大值,根节点<右子树的最小值

空树是二叉搜索树

3.先序遍历 (非递归)

跟左右:借助栈,1步头节点先入栈

循环:节点出栈,打印->压入右孩子->压左孩子

4.后序遍历(非递归)

根右左逆向->左右跟==后续

循环:节点出栈,打印(打印改为压入另一个备用栈)->压入右孩子->压左孩子

循环结束一次弹出打印备用栈内容

5.中序遍历(非递归)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBvDSEeX-1639208045343)(C:\Users\57281\AppData\Roaming\Typora\typora-user-images\image-20210719004516874.png)]

图算法笔记

1.拓扑排序

循环:找入度为0的节点,去掉一个入读节点的同时,将它所指向的边也去掉

2.刷图算法时,可以熟练其中一种存储结构,其他题的不同存储结构转为自己熟悉的结构,再解题。

String刷题笔记

1.Character.isDigit('c')判断字符是否是数字,是返回ture;

2.连续数字字符串->int

if (Character.isDigit(cr)){
                    int num=0;
                    int j=i;
                    while (j<len&&Character.isDigit(chars[j])){
                        num=num*10+(chars[j++]-'0');
                        }
                    nums.push(num);
                    i=j-1;
                }

3.累乘得sum要判断整数得范围题

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
class Solution {
     public int reverse(int x) {
        int tem=0;
        int sum=0;
        while(x!=0){
            tem=x%10;
			//整数最大范围2147483647
            if (sum>214748364||(sum==214748364&&tem>7)){
                return 0;
            }
            if (sum<-214748364||(sum==-214748364&&tem<-8)){  //因为绝对值要考虑负数
                return 0;
            }
            sum=sum*10+tem;
            x=x/10;
        }
            return sum;
    }
}

动态规划

1.位运算取反符号:~

(1)提取最右边的1公式:a=01011000->a&(~a+1)
(2)左移一位:diagonals1<<1;
(3)右移一位:>>
(4)无符号右移>>> n右移一位:n=n>>>1

2.二维数组的对角线判断

a[i1][j1],a[i2][j2],即Math.abs(i1-i2)==Math.abs(j1-j2)

3.从左向右的尝试模型

从左边开始,按位思考是否尝试的两种情况进行递归

4.规定左右范围的尝试模型

特征:从左边或右边开始操作

5.决策问题

从限制为最小的情况考虑,如只有一个人,两个人开始。
暴力递归->记忆化搜索->精细化数据结构(每个格子的值是枚举行为得到的,通过分析结构,如果能省区枚举行为的话,即再精细)

学习重点

mysql调优,数据结构,jvm,垃圾回收机制,Java多线程(模拟多并发),计算机网络(网络通讯原理)。计算机组织原理(和Java多线程时间片的联系)
学习方式:看书跟着做实例。
多并发调试工具,jemeter。
简历突出自己强的点

数组

list转Arrary
ansList.stream().mapToInt(Integer::intValue).toArray();

方式:看书跟着做实例。
多并发调试工具,jemeter。
简历突出自己强的点


## 数组

list转Arrary
ansList.stream().mapToInt(Integer::intValue).toArray();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值