问题
给定一系列线段,每条线段可以是水平或者竖直。求相交的线段
解决
算法的基本思想是先将线段以x坐标进行排序。做一条扫描线,从左往右扫描,也就是下图中的红线。
当进入一条水平的线时,记录该线段的y坐标。
当走出水平线时,从二叉查找树中删除该线段的y坐标。
...
分类:
其他好文 时间:
2014-06-19 12:56:29
阅读次数:
305
计算机的本质工作就是做数学运算,那计算机可以读入字符串"1+2+3+4+5+6+7"并计算值吗?
答案是肯定的。
这里我基本实现了个位数的加减乘除,当然这个算法最简单的解决方式是采用二叉树(后面会实现~),这里作出了栈的实现方式。
首先引入两个概念:
中缀表达式和后缀表达式
1,在生活中我们通常书写1+1的时候都会写成1+1,废话~,这就是中缀表达式,更符合人们的思维习惯与想法。
2,所谓后缀表达式就是将运算符写在操作数的后面,这样更符合计算机的思维。...
分类:
其他好文 时间:
2014-06-19 11:05:41
阅读次数:
364
Description :Given a singly linked list where
elements are sorted in ascending order, convert it to a height balanced
BST.分析:这道题目简单版是把一个排序好的数组转成平衡的二叉树...
分类:
其他好文 时间:
2014-06-16 10:51:54
阅读次数:
237
堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。
有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二...
分类:
其他好文 时间:
2014-06-16 10:41:34
阅读次数:
335
主要参考>Java语言描述(Mark Allen
Weiss)二叉查找树主要的操作是:1.查找,2,插入,删除。查找操作:从根节点开始,递归查找。如果值等于当前根节点,返回根节点存储的值。若果查找的值小于跟根节点的值,则查找左子树,反之递归查找右子树。如果要查找的当前节点为NULL,说明查找结束了,...
分类:
编程语言 时间:
2014-06-16 06:56:30
阅读次数:
277
2014-06-1215:00:14主要内容为:AVL树的插入操作;AVL树的删除操作;AVL树的插入操作主要参考>Java语言描述(Mark
Allen
Weiss)这个博客写的也挺好,可以看下http://dongxicheng.org/structure/avl/AVL树的删除操作看了http...
分类:
编程语言 时间:
2014-06-16 06:11:25
阅读次数:
352
一、线段树线段树既是线段也是树,并且是一棵二叉树,每个结点是一条线段,每条线段的左右儿子线段分别是该线段的左半和右半区间,递归定义之后就是一棵线段树。例题:给定N条线段,{[2,
5], [4, 6], [0, 7]}, M个点{2, 4, 7},判断每个点分别在几条线段出现过?1、构建线段树2、处...
分类:
其他好文 时间:
2014-06-13 18:43:01
阅读次数:
262
Path Sum:Given a binary tree and a sum, determine
if the tree has a root-to-leaf path such that adding up all the values along the
path equals the giv...
分类:
其他好文 时间:
2014-06-13 16:09:02
阅读次数:
237