簡體   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