繁体   English   中英

在方案中实现二叉搜索树

[英]implementing binary search tree in scheme

方案/球拍中的功能。 使用二叉搜索树处理一些函数。 我已经定义了辅助函数:

;; returns value of node
(define (value node)
    (if (null? node) '()
        (car node)))

;; returns left subtree of node
(define (left node)
    (if (null? node) '()
    (cadr node)))

;; returns right subtree of node
(define (right node)
    (if (null? node) '()
    (caddr node)))

我正在尝试编写一个函数size ,它将树作为参数,并返回给定树中的非空节点数

看来你很亲密。 试试这个(未经测试):

(define (size tree)
  (if (null? tree) 0
      (+ 1 (size (left tree)) (size (right tree)))))

虽然,就个人而言,我更愿意使用#f作为空值,而不是'() 在那种情况下,使用not而不是null? 在第一行。

只是一个替代!! 你可以使用结构,这将减少编写这三个函数的工作......

(struct node (val left right) #:transparent)
(struct null-tree ())

并使用结构的内置函数直接编写上述函数,即谓词和参数访问器。

(define (size tree)
  (if (null-tree? tree) 0
    (+ 1 (size (left tree)) (size (right tree)))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM