SORU
26 Mart 2009, PERŞEMBE


Genişlik Derinlik Vs İlk Önce

Ağaç/Grafik geçiş yapma, Genişlik ve Derinlik İlk önce arasındaki fark nedir? Herhangi bir kodlama veya yarı örnekler harika olurdu.

CEVAP
26 Mart 2009, PERŞEMBE


Bu iki anlamda da bir ağaca yürüyen iki farklı şekilde ayırt.

Muhtemelen en kolay yoldur. Düşünün ağaç:

    A
   / \
  B   C
 /   / \
D   E   F

Birderinlikilk geçişi bu sırada düğümleri ziyaret eder

A, B, D, C, E, F

Her tarafa dikkat edinaşağıdevam etmeden önce bir bacak.

Birgenişlikilk geçişi bu sırada düğüm ziyaret edin

A, B, C, D, E, F

Burada her şekilde çalışıyoruzkarşısındaaşağı gitmeden önce her düzeyde.

(Geçişi siparişler biraz belirsizlik var unutmayın, ve "ağaç. her seviyede okuma düzeni korumak için hile yaptım. Her iki durumda da ya önce C sonra B ... ... ve aynı şekilde F. ya da Bu olabilir önce ve sonra E alabilirim ya, sana bağlı uygulama önemli...) olabilir


Geçişi her iki tür yarı kod ile elde edilebilir:

Store the root node in Container
While (there are nodes in Container)
   N = Get the "next" node from Container
   Store all the children of N in Container
   Do some work on N

İki geçişi emirleri arasındaki fark Container seçimi yatıyor.

  • İçinderinlik ilkbir yığın kullanın. (Özyinelemeli uygulaması, çağrı yığını...) kullanır
  • İçingenişlik önceliklibir sıra kullanın.

Özyinelemeli uygulama gibi görünüyor

ProcessNode(Node)
   Work on the payload Node
   Foreach child of Node
      ProcessNode(child)
   /* Alternate time to work on the payload Node (see below) */

Özyineleme için sonuna kadar garanti yani çocukları vardır, bir düğüm ulaştığınızda biter sonlu, döngüsel grafikler.


Bu noktada, hala biraz hile yaptım. Küçük bir zeka ile deişle ilgilidüğümler bu sırada:

D, B, E, F, C, A

ağaca yürüyen ben dönene kadar her düğümde işi yapmak istemiyorum nereye derinlik-önce bir varyasyonu olan. Ancakziyaret ettiyolda üstü bezleri çocuklarını bulmak için aşağı.

Bu geçişi özyinelemeli uygulaması oldukça doğal ("Başka bir zaman" ilk " yerine yukarıdaki satırı "İş" çizgi), ve değil . kullanınçokeğer bir açık yığın kullanırsanız zor, ama bir egzersiz olarak bırakıyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011