【问题标题】:Binary search trees to count the number of full classes二叉搜索树计算完整类的数量
【发布时间】:2015-11-25 04:45:19
【问题描述】:

我正在使用带有列表缩写的开头语言

我希望我的程序做的是消耗 BST(课程)和自然数(上限)并生成类 是满的。如果课程中至少有人数上限的学生,则该课程被视为已满

这是我到目前为止所做的:

BST 要么是空的,要么是

(make-node Nat (listof Nat) BST BST), 

递归满足排序属性:

左边的每个 course-id 都小于 course-id

右边的每个 course-id 都大于 course-id

要求:

10000

studlist 中的每个元素都在 100000000 和 999999999 之间

inclusive,代表学生的ID

参加了课程。

(define-struct node (key val left right))

辅助函数,统计班级学生人数:

(define (count-students alist)    
 (cond
    [(empty? alist) 0]

    [(cons? (car alist))(+(count-students(car alist))
                          (count-students(cdr alist)))]
            [else(+ 1(count-students(cdr alist)))]))

主要功能:

(define (count-full-courses courses cap)
 (cond
    [(empty? courses)0 ]

    [else (cond
             [(or (=(count-students(node-val courses))cap)
                  (>(count-students(node-val courses))cap))(add1(+
                                                              (count-full-courses (node-left courses)cap)
                                                              (count-full-courses (node-right courses)cap)))]

应该发生的事情的例子:

(define c89761 (make-node 89761 (list 987654321 673498453 237622334) empty empty))

(define c99800 (make-node 99800 (list 673498453 673498453 876542334 777777777)empty empty))

(define c99500 (make-node 99500 (list 987654321 673498453 673498453 876542334)empty c99800))

(define c99999 (make-node 99999 (list 987654321 673498453 444444444)c99500 empty))

(define DB     (make-node 99065 (list 123456789 987654321 673498453 876542334)c89761 c99999))

(count-full-courses DB 4) should produce 3

【问题讨论】:

    标签: scheme binary-search-tree


    【解决方案1】:

    没关系,我想通了,我只是需要更多的基本案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多