Bisakah lintasan pre-order dari dua pohon yang berbeda tetap sama meskipun berbeda?

11

Pertanyaan ini cukup banyak menjelaskan bahwa mereka bisa, tetapi tidak menunjukkan contoh ada dua pohon yang berbeda dengan traversal pre-order yang sama.

Disebutkan pula bahwa traversal berurutan dari dua pohon yang berbeda dapat sama meskipun secara struktural berbeda. Apakah ada contohnya?

Sharan Duggirala
sumber
2
Ini adalah latihan tingkat pemula. Apa yang sudah Anda coba dan di mana Anda terjebak?
Raphael
1
Bahkan jika Anda memiliki postorder, selain preorder, traversal, Anda masih bisa mendapatkan pohon yang berbeda. Mengapa tree tidak mungkin secara unik dengan preorder dan postorder traversal yang diberikan? Anda dapat menemukan contoh in-order di Dari dalam representasi ke pohon biner . Juga terkait / duplikat: Kombinasi sekuensialisasi pra, pasca, dan berurutan manakah yang unik?
Dukeling

Jawaban:

28

Contoh Pohon (gambar) :

     A:                 B:
     ‾‾                 ‾‾
     1                  1
    /                  / \
   2                  2   3
  /  
 3   

Ini adalah contoh yang sesuai dengan skenario Anda, nilai akar pohon 1 adalah 1, memiliki anak kiri dengan nilai 2, dan anak kirinya juga anak kiri dengan nilai 3.

Nilai akar pohon B adalah 1, memiliki anak kiri dengan nilai 2 dan anak kanan dengan nilai 3.

Dalam kedua kasus, Preorder traversal adalah 1-> 2-> 3.

royashcenazi
sumber
11
Ini sebenarnya adalah kasus khusus dari aturan umum bahwa untuk setiap pohon dengan urutan tertentu, ada pohon linier hanya anak-anak kiri (atau hanya kanan) yang memiliki urutan yang sama.
Dancrumb
5
@ Dancrumb Yang pada gilirannya adalah kasus khusus dari aturan umum bahwa untuk setiap pohon dengan N node, dan untuk setiap bentuk pohon (= pohon tidak berlabel) dengan N node, ada cara label yang terakhir sehingga berbagi traversal dengan mantan. Ini berlaku untuk setiap traversal (kunjungan pra / pasca- / berurutan).
chi
8

nn1,2,,n

Ini berarti bahwa kita dapat menamai node dari struktur pohon biner apa pun sehingga akan menghasilkan urutan pre-order yang sama dengan yang ada pada pohon lain.

Ini tidak akan berfungsi jika kita harus mengasumsikan properti lain dari pohon. Sebagai contoh, jika pohon seharusnya pohon pencarian biner, dengan semua kunci berbeda, urutan pre-order-nya akan secara unik menentukan pohon.

Hendrik Jan
sumber
8

Menghitung argumen

nnthCn=(2n)!/(n!(n+1)!).

    o         o         o         o         o
   /         /         / \         \         \
  o         o         o   o         o         o      .
 /           \                     /           \
o             o                   o             o

n!

(2n)!(n+1)!=2n(2n1)(n+2).

n!nn!Cn>1n>1.n

CR Drost
sumber
1

Mengenai pertanyaan kedua Anda, ya dua pohon yang berbeda secara struktural dapat memiliki inorder traversal yang sama. Salah satu contohnya adalah:

     A:                 B:

     1                  2
    / \                  \
   2   3                  1
                           \
                            3

Inorder traversal kedua pohon sama. 2 -> 1 -> 3

Navjot Singh
sumber