[英]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.