找出 二叉树的下一个节点?
这是一道来自于 《剑指 Offer》 的题目,题目信息:
给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。
这是一道来自于 《剑指 Offer》 的题目,题目信息:
给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。
熟悉Spring的我们都知道,Spring替我们管理Bean,默认的类型就是
Singleton
,也就是单例,即全局唯一,并且提供一个全局访问点。
那么,我们自己如何实现单例呢?这里需要把握住几个核心要点:
单例模式的应用场景:
计算机中只存在二进制,因此一个数在计算机中是以二进制的形式表示的,也被称为机器数。
机器数的分类:
真值:带符号位的机器数对应的真正数值
⚠️注意:引入补码的目的是为了在计算机底层统一将加减法运算转化为加法运算,便于计算机的运算。
Date
类从JDK1.0开始就已经提供了,封装了当前的日期和时间。月份和小时从0开始,月份的天数从1开始,年份从1900开始。
但是,Date类不能实现国际化,偏移量也不统一。
⚠️注意:该类中大部分方法都已经过时,并且是线程不安全的。
统一的编码风格有助于个人开发和团队协作,但是 JetBrains 出厂自带的 code style 并不是很完善,个人还是推荐 google code style。
在日常的开发中,我们通常会使用 git
来管理代码,当我们对代码就行改动之后,可以通过 git commit
来提交对代码的修改。
git 规定提交时需要填写提交信息,用来作为改动备注保存在 commit
历史中,方便溯源。那么,规范的提交信息不仅有助于他人
review
,还可以输出有效的CHANGE
LOG,甚至对于项目的研发质量都有很大的提升。
但是很遗憾,在日常的工作中,大多数同学的提交信息都是粗略写写,没有很好的重视,这对于项目的管理维护来说是非常不友好的。那么,接下来我就来分享下关于 git commit / pull request 的一些规范,让提交信息好看还实用。
官网介绍:
Reactive systems have certain characteristics that make them ideal for low-latency, high-throughput workloads. Project Reactor and the Spring portfolio work together to enable developers to build enterprise-grade reactive systems that are responsive, resilient, elastic, and message-driven.
数组可以说是最简单的一种数据结构,它占据一块连续的内存并按照顺序存储数据。创建数组时,需要指定数组的容量大小,然后根据大小分配内存。
存在的问题:空间效率不是很好。即使只在数组中存储一个数字,也需要为所有的数据预先分配内存,于是乎经常会有空闲的区域没有得到充分利用。
优势:由于数组的内存是连续的,于是可以根据下标在O(1)的时间内读写任何元素,因此时间效率是很高的。
⚠️注意:
为了解决数组空间效率不高的问题,人们又提出并实现了多种动态数组,在这里不再赘述。