上一章我们得到了Token序列,而语法分析就是根据Token序列构造抽象语法树的过程,抽象语法树是一种用来描述程序代码语法 结构的树形表示方式,这种结构化的表示方式将为后面语义分析、代码生成阶段提供极大的便利。语法树的每一个节点都代表了程序代码中的一个语法结构,如包、类型、修饰符、运算符、接口、返回 ...
分类:
其他好文 时间:
2018-09-25 10:14:13
阅读次数:
572
简化之后树节点中孩子的数量就少了,但是通用树形结构中每个节点可能有很多个孩子,这样简化之后的树还能描述通用的树形结构吗? 每个节点都有一个指向其第一个孩子的指针,每个节点都有一个指向其第一个右兄弟的指针。 任何的树形结构都能用“二杈”的方式表示,也就是用孩子兄弟表示法。 因此,我们的研究内容可以局限 ...
分类:
其他好文 时间:
2018-09-23 16:25:50
阅读次数:
170
2 3 tree 2 3树节点 : 1. null节点,null节点到根节点的距离都是相同的,所以2 3数是平衡树 2. 2叉节点,有两个分树,节点中有一个元素,左树元素更小,右树元素节点更大 3. 3叉节点,有三个子树,节点中有两个元素,左树元素更小,右树元素更大,中间树介于两个父元素之间。 插入 ...
分类:
其他好文 时间:
2018-09-23 13:52:51
阅读次数:
147
树的定义是递归的,与树的相关算法也是递归的。 如果我们定义一个数组,这个数组中的每一个元素是一棵树,那么这个数组就构成了一个森林。 树节点里面有指向父节点的指针,对于工程实践来说非常有帮助。 添加TreeNode.h文件: 添加Tree.h文件: 小结: ...
分类:
其他好文 时间:
2018-09-22 00:59:52
阅读次数:
205
一、定义 堆的定义 堆其实就是一棵完全二叉树(若设二叉树的深度为h,除第 h 层外,其它各层 (1~h 1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边), 定义为:具有n个元素的序列(h1,h2,...hn),当且仅当满足(hi =h2i,hi =h2i+1)或(hi=h2i, ...
分类:
其他好文 时间:
2018-09-17 16:18:02
阅读次数:
218
线段树节点维护区间最小值,查找时优先从左侧的区间寻找. 每一次循环都在树中不停寻找第一个小于等于当前持有数的值,然后抹去,直到找不到为止. include include include include define lson rt 1; build(Lson); build(Rson); push ...
分类:
其他好文 时间:
2018-09-14 19:54:35
阅读次数:
183
带权路径最小的二叉树称为最优二叉树,也称哈夫曼树。 节点合并:每次都是选取最小权值的二叉树进行合并,因此使用的是贪婪算法! ...
分类:
编程语言 时间:
2018-09-13 16:29:30
阅读次数:
129
"原题链接" 题目大意 给定一棵根为1,初始时所有节点值为0的树,进行以下三个操作: 将以某点为根的子树节点值都变为1 将某个节点及其祖先的值都变为0 询问某个节点的值 解题思路 这是一道裸的树链剖分题。下面详细地介绍一下树链剖分。 树链剖分预备知识: 线段树、DFS序 树链剖分想法|起源 首先,如 ...
分类:
其他好文 时间:
2018-09-13 12:10:49
阅读次数:
285
二叉树的Java实现 一、分析 一个二叉树节点包含三个部分,分别是,指向左子树的部分,指向右子树的部分,数据部分,如下图所示: 我们是否可以将每个节点都抽象为一个节点对象? 我们下面来尝试下 二、代码实现 我们是否可以将每个节点都抽象为一个节点对象? 我们下面来尝试下 二、代码实现 我们是否可以将每 ...
分类:
其他好文 时间:
2018-09-13 01:20:56
阅读次数:
142
#ifndef BTree_hpp #define BTree_hpp #include "Vector.hpp" #define BTNodePosi(T) BTNode* //B-树节点位置 //B-树节点模版类 template struct BTNode{ BTNodePosi(T) par... ...
分类:
其他好文 时间:
2018-09-10 17:58:03
阅读次数:
142