2010-12-13 1 views
0

Можно создать дубликат:
Construct a Treeобхода дерева с Симметричных и предзаказом

Привет, как я могу написать prorgam с Явой, чтобы создать дерево с заданным предзаказом и а Симметричные , Я знаю, что обход дерева с inorder, а также обход дерева с предзаказом, но я не могу сделать то же самое для создания дерева как изнутри, так и из-за предварительного упорядочения.

+1

Это нужно немного разъяснить. Дерево всегда будет иметь одинаковый предзаказ или порядок. Вы пытаетесь написать функцию, которая создает дерево, полученное либо обход? – Raskolnikov

+1

Пример пожалуйста. Предпочтительно с иллюстрацией. – aioobe

+0

например, у меня есть inorder = {2,4,1,7,12,11} и preorder = {1,2,4,7,11,12}, и теперь я хочу создать дерево с указанным выше порядком и предварительный заказ – kaju

ответ

0

Алгоритм настолько прост, если вы правильно строите свое дерево! более

preorder : 

print(tree){ 
    printf(tree.value); 
    print(tree.left); 
    print(tree.right); 
} 

inorder : 

print(tree) { 
    print(tree.left); 
    print(tree.value); 
    print(tree.right); 
} 

информация здесь: http://en.wikipedia.org/wiki/Tree_traversal

+0

Вы не указываете ответ .. – Dejell

1

Давайте учиться на примере:

PRE-ORDER: = abdgheicfj IN- ЗАКАЗА: = gdhbeiafjc

Из предварительного заказа мы можем сказать, что,

a - корень.

Из В заказ мы можем сказать, что,

g d h b e i оставлены поддерево и fjc прав суб-дерево,

Теперь следующий корень будет b (от предварительного заказа)

и левое и правое поддерево является gdh и ei из в заказе ...

продолжает делать это ...

+0

У вас есть образцы кода? – Dejell