2014-11-23 4 views
2

Я новичок в схеме, и мне нужна помощь. Как найти родителя элемента в дереве?Как найти родителя в дереве

;; 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))) 

Я думаю, что это должно быть так:

(define (parent element tree) 

    (cond 
     ((null? tree)) 
     (car tree) 
     ((< val (car tree)) (parent val (left tree))) ; 
     ((> val (car tree)) (parent val (right tree))); 


    ) 
) 

ответ

0

Добавить дополнительный аргумент для родителей

(define (parent element parent-of-tree tree) 
    ...) 

Корневой элемент не имеет родителя, так называют parent так:

(parent element #f tree) 

Когда вы идете глубже в дерево, передайте родительский элемент в родительском дереве. Например, (< val (car tree)) становится:

((< val (car tree)) (parent val tree (left tree))) 
Смежные вопросы