Python'da ikili arama ağaçlarını nasıl gösteririm? Temelde (Java, C#, vb gibi) başvurular ziyade işaretçileri kullanan başka bir dilde böyle - vs, vspython'daki ikili arama ağaçlarını temsil eder
cevap
class Node(object):
def __init__(self, payload):
self.payload = payload
self.left = self.right = 0
# this concludes the "how to represent" asked in the question. Once you
# represent a BST tree like this, you can of course add a variety of
# methods to modify it, "walk" over it, and so forth, such as:
def insert(self, othernode):
"Insert Node `othernode` under Node `self`."
if self.payload <= othernode.payload:
if self.left: self.left.insert(othernode)
else: self.left = othernode
else:
if self.right: self.right.insert(othernode)
else: self.right = othernode
def inorderwalk(self):
"Yield this Node and all under it in increasing-payload order."
if self.left:
for x in self.left.inorderwalk(): yield x
yield self
if self.right:
for x in self.right.inorderwalk(): yield x
def sillywalk(self):
"Tiny, silly subset of `inorderwalk` functionality as requested."
if self.left:
self.left.sillywalk()
print(self.payload)
if self.right:
self.right.sillywalk()
.
Düzenleme:
for x in tree.walk(): print(x.payload)
: tam olarak aynı işlevselliği walk
yöntemin üstüne bir tüy yolma astar dış pasajı çünkü
, sillywalk
varlığının gerçekten saçma ve walk
ile, sipariş düğümlerinde diğer tüm işlevler hakkında bilgi edinebilirsiniz, sillywalk
ile hemen hemen diddly-squat edinebilirsiniz. Ancak, OP, yield
'un "korkutucu" olduğunu söylüyor (Python 2.6'nın diğer 30 anahtar kelimesinin kaçının OP'nin kararında bu tür korkutucu kelimeleri hak ettiğini merak ediyorum?). Bu yüzden print
'un ummuyor!
Bu
BSTS temsil üzerinde, tamamen gerçek sorunun ötesinde tüm şudur: soru tamamen__init__
cevaplanır
o - düğümün yükünü tutmak için bir payload
özniteliği left
ve right
nitelik ya None
(anlam tutmak için bu düğümün soyundan gelenleri yoktur, ya da Node
(alt taraftaki alt ağaçların üst kısmı uygun taraftadır). Tabii ki, BST kısıtlaması, her düğümün her sol soyundan (eğer varsa), söz konusu düğümün değerinden daha az veya eşit bir yüke sahip olması, her bir doğru (eğer varsa) daha büyük bir yüke sahip olmasıdır - insert
ekledim sadece, tüm düğümleri artan yük yükleri sırasına almak için ne kadar önemsiz olduğunu göstermek için bu kısıtlamayı sürdürmenin ne kadar önemsiz olduğunu göstermek için, walk
(ve şimdi sillywalk
). Yine, genel fikir, 'un'u bir BST ile C# ve Java gibi işaretçiler yerine referanslar kullanan herhangi bir dilde temsil ettiğiyle aynıdır.
Bunu bir kenara bırakmalısın, hep birlikte böyle okumak çok zor. – detly
@Alex Verim !!!! : | Eminim benim gibi bir yeni oyuncu için bundan daha az korkutucu bir çözüm var. –
@Bunny, Python'ın gerçekten çok az sayıda anahtar kelimesi var (31, 2.6'dan itibaren) - bu küçük sayıdan hangilerini "korkutucu" buluyorsunuz? Her neyse, ben tamamen mutlu ve (ve @detly mutlu yapmak için boşluk eklemek) tamamen aptalca ve sessiz bir yürüyüş gibi bir yöntem (aslında sadece 'yürüyüş' gibi çalışan ama delicesine sınırlı bir şekilde çalışan) eklemek için gidiyorum - A'yı buna göre düzenlemek. –
- 1. raw.githubusercontent.com URL'leri neyi temsil eder?
- 2. max value temsil eder bigint
- 3. Unicode karakteri neyi temsil eder?
- 4. Simgenin yanındaki sayı ne temsil eder?
- 5. @ simgesi, nesnel-c'de neyi temsil eder?
- 6. Korelasyon katsayısı aslında ne temsil eder
- 7. Dizin yolundaki pythondaki boşluklar
- 8. Programlama dilinde ikili alan nasıl temsil edilir?
- 9. İkili Arama C++ STL
- 10. İkili Arama Sonlandırma Durumu
- 11. İkili Arama Ağacını sil
- 12. Dizi İçinde İkili Arama
- 13. ruby'de ikili arama ağaçları
- 14. İkili Arama Ağacında verileri güncelleştirme
- 15. İkili Arama Ağacı Dizisi Çıktısı
- 16. `const char * yes [5]` bu kod satırında neyi temsil eder?
- 17. Bir 'r' python'da bir dizeden önce neyi temsil eder?
- 18. UML sınıf diyagramı - başlangıç değeri ile özniteliği temsil eder
- 19. Perl sembol tablosundaki yazdırılamayan karakterler neyi temsil eder?
- 20. JSP, bir bakladaki diğer alanlardan oluşturulmuş bir alanı temsil eder
- 21. .xuserstate ve .xcscheme dosyalarındaki tüm değişiklikler neyi temsil eder?
- 22. Grave vurgu sembolü (`) (tek alıntı değil) PHP'de neyi temsil eder?
- 23. Tablolarla ikili bir ağaç nasıl temsil edilir (html)?
- 24. Konturlar opencv: İkili bir görüntüdeki küçük konturları nasıl yok eder
- 25. Clojure'da ikili arama ağacını nasıl yaparsınız?
- 26. Bir ikili arama ağacının derinliğini hesaplama
- 27. Yazdırma Düzeni Sırası İkili Arama Ağacı Biçimlendirme
- 28. Ruby # index Yöntem VS İkili Arama
- 29. D 2.0'de (Phobos) İkili Arama mı?
- 30. Java İkili Arama <Identifier expected>
Daha spesifik olabilir misiniz? Ne yapmaya çalışıyorsun? –
Öğrenme uğruna ikili arama ağaçları kurmaya çalışıyorum. –