#树 二叉树的建立和遍历

  树是一种非线性的数据结构,用它能很好地描述有分支和层次特性的数据集合。树型结构在现实世界中广泛存在,如社会组织机构的组织关系图就可以用树型结构来表示。树在计算机领域中也有广泛应> 用,如在编译系统中,用树表示源程序的语法结构。在数据库系统中,树型结构是数据库层次模型的基> 础,也是各种索引和目录的主要组织形式。在许多算法中,常用树型结构描述问题的求解过程、所有解的状态和求解的对策等。在这些年的国内、国际信息学奥赛、大学生程序设计比赛等竞赛中,树型结构成为参赛者必备的知识之一,尤其是建立在树型结构基础之上的搜索算法。
  在树型结构中,二叉树是最常用的结构,它的分支个数确定、又可以为空、并有良好的递归特性,特别适宜于程序设计,因此也常常将一般树转换成二叉树进行处理。

                
                  
                  

阅读全文 »

#语法 字符串处理函数

阅读全文 »

#算法 LIS最长上升子序列

思路

首先需要用到一个数组 lowlowlow[i]=low[i]= 长度为 ii 的上升子序列末尾一个数的最小值。为什么是最小值呢?通过贪心的思想来说,序列最后一位越小后面能加上的元素就越多。随后,遍历一个元素数组 aa ,对于 a[i]a[i] ,如果它大于 low[ans]low[ans] ( ansans 是当前的最长的子序列长度),则插到子序列的后面,即 ansans 加一,low[ans]low[ans] 赋值为 a[i]a[i] (此时 ansans 的值已经自增)。否则,就用 a[i]a[i] 维护 lowlow 数组:把 a[i]a[i] 替换掉当前子序列中小于 a[i]a[i] 的最大的一项。

代码

阅读全文 »