二叉树的遍历(前序、中序、后序、层次)
基本性质
每个结点最多有两棵子树,左子树和右子树,顺序不可颠倒。
- 非空二叉树第\(n\)层最多有\(2^{n-1}\)个元素。
- 深度为\(h\)的二叉树,至多有\(2^h-1\)个结点。
每个结点最多有两棵子树,左子树和右子树,顺序不可颠倒。
人们的每次思考并不都是从零开始的。比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始。你的记忆是有持久性的。
传统的神经网络并不能如此,这似乎是一个主要的缺点。例如,假设你在看一场电影,你想对电影里的每一个场景进行分类。传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类。
循环神经网络(Recurrent Neural Networks)解决了这个问题。这种神经网络带有环,可以将信息持久化。
…You are given an integer array nums and you have to return a new counts array. The counts array has the property where counts[i]
is the number of smaller elements to the right of nums[i]
.
Fenwick Tree 又叫二分索引树(Binary Index Tree),是一种树状结构的数组。该数据结构是由 Peter M. Fenwick 在1994年首次提出来的。最初,Fenwick Tree 被设计用于数据压缩,而现今,该数据结构主要用来存储频次信息或者用于计算累计频次表等。
对于普通的数组,更新数组中的某一元素需要O(1)
的时间,计算数组的第n
项前缀和(即前n
项和)需要O(n)
的时间。而 Fenwick Tree 可以在O(log n)
的时间内更新结点元素,在O(log n)
的时间内计算前缀和。
在紫荆公寓这边,由于原生IPv6
需要认证才能使用,十分不方便。而使用isatap
隧道的方法访问IPv6
则十分的稳定。但是由于isatap
隧道只能够得到一个Global
的IPv6
的地址,因此需要在路由器上启用IPv6 NAT
才能够使得路由器后面的设备无缝访问IPv6
资源。之前的路由器,在配置好之后稳定地运行了一年有余,前几日因为一些需求,需要重新配置路由器,因此将配置的过程记录下来,供今后参考。
由于IPv6是不支持NAT的,因此,默认情况下,宿舍里装上路由器后,就没法再使用学校提供的IPv6服务了。不过难道真的没有办法了么?答案是否定的。将下面的脚本保存后,并执行,就可以在NAT后利用isatap隧道来使用IPv6啦~脚本中的隧道服务器是清华的。
…之前该路由器一直用的是Open-WRT的固件,但是时间长了之后,总是会遇到莫名其妙的Wifi掉线问题,VPN崩掉的问题,可能是因为一直使用开发版的固件的缘故吧。但是稳定版的Backfire固件似乎有问题,我每刷必成砖,每次都要ttl进行修复。好了闲话少提,这次主要记录的是将该路由器刷成Buffalo官方提供的Professional版本的固件,并且配置使用的过程。
…紫荆15#这边的网络是v4/v6双栈,可以自动获取到v4和v6的地址,但是鉴于网络中心的某一个项目强行给全校绝大部分ipv6加上了一个前无古人后无来者充分彰显世界一流大学地位巨烂无比经常崩溃的认证系统,并且在可以预见的未来,该认证系统并不会被拿掉,因此我毅然放弃了使用原生的ipv6,而改用没有认证系统的isatap隧道。
默认情况下,Ubuntu上宋体也开了防锯齿,在字体比较小的时候,英文和中文都非常的模糊,看着十分的难受。在这里,提供一个配置文件,只修改宋体的设置,使得宋体的显示变锐利(像Windows下一样)。
…今晚闲来无事,便写了一个登录新版TUNet的脚本,因为是一边翻书一边写的,所以非常挫,不过应该能用。
写这个最初目的是做嵌入式的大作业的,因为TUNet更新了,所以不能做以前的那个mytunet的交叉编译了。。。
脚本在Openwrt上测试通过。
把脚本中的your_username
替换成info的用户名,your_password_md5
替换成你的密码的md5,可以用echo -n your_password | md5sum
来得到。另外脚本需要curl
,Ubuntu用户可以用sudo apt-get install curl
来安装。