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