SICP 建立二叉查找(排序)树

二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; (3)左、右子树也分别为二叉排序树; 在scheme和其他lisp家族语言中,二叉树常用l...

2017-01-29 22:55:37

阅读数:228

评论数:0

SICP 2.59 集合的合并union_set

现在有两个集合set1 和 set2, 需要将这两个集合合并成一个集合。 思路很简单: 顺序查找set1中的元素set2是否包含,是,则找下一个,否,加入到set2。 最后返回set2scheme 实现:(define (union_set set1 set2) (if (null?...

2017-01-26 15:46:25

阅读数:159

评论数:0

SICP 2.42 “八皇后问题”及“n皇后问题”

八皇后问题: 在国际象棋棋盘(8x8)上,摆八个皇后,任意一个皇后都不能攻击另一个皇后(也就是说:任意两个皇后都不能在同一行,不能在同一列 ,不能在同一对角线) 递归地解释这个问题:假设我们已经生成了棋盘k-1列中k-1个皇后的所有可能方式,现在需 要的就是对其中每种方式,生成出将下一个皇后...

2017-01-19 00:10:30

阅读数:478

评论数:0

SICP 2.2 嵌套映射

这一节,我们来做一个map,筛选出以下下数对里和为素数的数对 c/r 1 2 3 4 1 (1 1) 2 (2 1) (2 2) 3 (3 1) (3 3) 4 (4 1) (4 2) (4...

2017-01-17 22:50:46

阅读数:286

评论数:0

SICP 2.38 研究递归和迭代模型

之前讨论的过程accumulate也称作fold_right(右展开),因为它将序列的第一个元素组合到右边所有元素的结果上。相对的,也有个fold_left(左展开),将左边的结果加到右边的元素上。 fold_right的scheme代码:> (define (fold_left op i...

2017-01-17 01:25:06

阅读数:289

评论数:0

SICP 2.35 树叶子节点的数量

这个问题并不难,但是要迎合出题人的格式:(define (count_leaves t) (accumulate <??> <??> (map <??> <??>)))Scheme代码:> (define (count_leaves t...

2017-01-15 22:49:44

阅读数:228

评论数:0

SICP 2.34多项式加法

对于一个多项式: 求值,我们可以化简找出其规律,利用Horner 规则化简: 可以明显看出多项式的递归规律:从an开始,(+ (* an x) a(n-1)),下一个也是如此,直到a0。 之前建立的accumulate过程,也有相似的递归性,应该是一类过程,accumulate的原始...

2017-01-15 20:38:36

阅读数:176

评论数:0

SICP 2.2.3 对一种数据处理过程的抽象

有一个很简单的问题:对0到n的整数中的偶数的斐波那契数求和。 不对它进行高级抽象的话,问题应该是这样解决的: Scheme代码:(define (even_fib n) (define (even_fib_it m re) (if (= m n) ...

2017-01-14 17:40:01

阅读数:274

评论数:0

SICP 2.30 && 2.31square_list (树的平方映射)

要求:有一棵树 (list 1 2 3 (list (list 4) 5) 6),将其转换为树 (1 4 9 ((16) 25) 36) 方案一:二叉递归(我根据自己的理解起得名字LOL)> (define (square_tree tree) (cond ((null? tre...

2017-01-13 21:36:54

阅读数:184

评论数:0

SICP 2.28 遍历二叉树的叶子节点

原理很简单,纯递归 scheme代码:> (define (fringe m) (cond ((null? m) '()) ((not (pair? (car m))) m) (else (append (fringe (c...

2017-01-13 12:15:33

阅读数:187

评论数:0

SICP 2.27 deep_reverse (迭代+递归)

练习2.27:现有 (list (list 1 2) (list 3 4 5)) 将其翻转构造成 (list (list 5 4 3) (list 2 1)) scheme代码:**(define (deep_reverse tree) (define (deep_reverse_it ...

2017-01-13 11:32:04

阅读数:267

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭