Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 3
1

Определить, является ли второе дерево поддеревом первого

18.05.2015, 01:11. Просмотров 882. Ответов 3
Метки нет (Все метки)

Нужна помощь, задача описана в заголовке. Смотрел похожие задачи, но не получается реализовать. Например у нас есть цепной список

Lisp
1
 (a(b(c)(d))(e(f))(g(h)(i))),
его поддеревьями могут быть списки:

Lisp
1
2
3
4
5
(a(b)(e))
 
(a(b(c)))
 
 (e(f))
и так далее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2015, 01:11
Ответы с готовыми решениями:

Определить, является ли второе дерево поддеревом первого
Заданы два дерева с помощью цепных списков. *Определить, является ли второе дерево поддеревом...

Определить, является ли второе дерево поддеревом первого
HASKELL. задано 2 дерева. нужно определить является ли второе дерево поддеревом первого. ...

Заданы два дерева с помощью цепных списков. *Определить, является ли второе дерево поддеревом первого
Заданы два дерева с помощью цепных списков. *Определить, является ли второе дерево поддеревом...

Является ли дерево поддеревом другого дерева
Подскажите пожалуйста как в прологе можно определить, является ли дерево Т1 поддеревом дерева Т. Я...

3
1045 / 939 / 107
Регистрация: 04.11.2012
Сообщений: 971
Записей в блоге: 3
24.05.2015, 18:19 2
Может это.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(defun F (ls sub)
  (cond
    ((null ls) nil)
    ((atom (car ls)) (F (cdr ls) sub))
    (t (if (equal (car ls) sub) 
                  t
                  (or (F (car ls) sub) (F (cdr ls) sub))))))
 
;; enter
(F '(a (b (c) (d)) (e (f)) (g (h) (i))) '(a (b (c))))
; nil
(F '(a (b (c) (d)) (e (f)) (g (h) (i))) '(b (c) (d)))
; t
(F '(a (b (c) (d)) (e (f)) (g (h) (i))) '(e (f)))
; t
(F '(a (b (c) (d)) (e (f)) (g (h) (i))) '(b (c) (d)))
; t
0
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 3
24.05.2015, 18:48  [ТС] 3
Спасибо большое за ответ.) Почти все так, только в первом тесте вашей программы тоже должно быть true. Например для дерева (A(B(C D) E(F G))) поддеревьями будут (A(B E)), (A(B(C))), (A(B(C D) E)) и тд.
0
Памирыч
24.05.2015, 18:55     Определить, является ли второе дерево поддеревом первого
  #4
 Комментарий модератора 
Закрыто
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2015, 18:55
Привет! Вот еще темы с ответами:

Графовая задача (является ли одно дерево поддеревом другого)
Заданы два дерева с помощью цепных списков. Определить, является ли второе дерево поддеревом...

Определить, является ли второе число перевертышем первого
Пожалуйста помогите решить. только напиши полностью всю программ 1. Даны два натуральных числа....

Является ли второе число делителем первого
Решите пожалуйста задачу!!!Делфи. Определить является ли второе число делителем первого.

Даны два натуральных числа. Проверить, является ли второе число перевертышем первого.
Даны два натуральных числа. Проверить, является ли второе число перевертышем первого.

Строки. Определить, можно ли из букв первого составить второе
Даны два слова. Определить, можно ли из букв первого составить второе. Каждая из букв второго слова...

Определить , можно ли из букв первого из них получить второе
Даны два слова . Определить , можно ли из букв первого из них получить второе . Рассмотреть два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.