【问题标题】:"Rotation of Binary Search Trees" in SchemeScheme中的“二叉搜索树的旋转”
【发布时间】:2013-10-25 22:34:57
【问题描述】:

任何人都可以帮助我左右旋转二叉搜索树的基本案例吗?我尝试将正确的旋转函数编写为:

 (define (right-rotate T)

      (make-tree (car (left T)) 
                 (left (left T)) 
                 (make-tree(value T) (right (left T)) (right T))))

但这让我在某个地方调用了一个空列表。此代码对于正确的旋转是否正确?另外,我的基本情况是什么?

【问题讨论】:

    标签: rotation scheme binary-tree


    【解决方案1】:

    您确实需要提供更多信息,例如您对“树”的表示形式是什么,以及如何定义和处理缺少其“左”或“右”子节点的树。

    (define (make-tree value left right)
      `(TREE ,value ,left ,right))
    (define value cadr)
    (define right caddr)
    (define left  cadddr)
    
    ;; How is an 'empty' tree denoted?
    (define empty 'EMPTY)
    (define (is-empty? tree)
      (eq? tree empty))
    
    (define (make-leaf value)
      (make-tree value empty empty))
    
    ;; Now you have the basis for a solution; here is a start.
    
    (define (right-rotate tree)
      (if (is-empty? tree)
          empty
          (let ((l (left tree)))
            (if (is-empty? l)
                <something>
                (make-tree (value l)
                           (left  l)
                           (make-tree (value tree) (right l) (right tree)))))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多