Ebeveyn dönen olmadan PHP ikili ağaç dengelemek için nasıl?

0 Cevap php

Ben mümkün olduğunca kendimi kadar net yapmak için çalışacağız. Tabanlı komşuluk listesi Modelden: http://articles.sitepoint.com/article/hierarchical-data-database

Ben bu ağaç dengelemek için bir yol gerekir

     0 
    / \ 
   1   2 
  /   / \ 
 3    4  5 
       \  \
        6  7

bir şey gibi:

        0 
      /   \ 
     1     2 
    / \   / \ 
   3   4 5   6
  /
 7

Örnek Kod dayanır:

<?php 
function display_children($parent, $level) { 
   $result = mysql_query('SELECT title FROM tree '. 
                          'WHERE parent="'.$parent.'";'); 
   while ($row = mysql_fetch_array($result)) { 
       echo str_repeat('  ',$level).$row['title']."\n"; 
       display_children($row['title'], $level+1); 
   } 
} 
?>

Ben kodu değiştirilmiş bu çıkışı bu gibi düz bir html tablo yapabilirsiniz böylece:

$super_parent = '0000' left Node entries into flat list:

 ____________________________________________________
| No. | Date of Entry       | Account ID  | Placement|
------------------------------------------------------
| 1   | 2010-08-24 11:19:19 | 1111a       |    a     |
| 2   | 2010-08-24 11:19:19 | 22221a_a    |    a     |
| 3   | 2010-08-24 11:19:19 | 33_2aa      |    b     | 
| 4   | 2010-08-24 11:19:19 | 33_2Ra      |    a     | 
| 5   | 2010-08-24 11:19:19 | 22221a_b    |    b     |
| 6   | 2010-08-24 11:19:19 | 33_2ba      |    a     |
| 7   | 2010-08-24 11:19:19 | 33_2bb      |    b     |
------------------------------------------------------

Ama ebeveyn hareketli veya dönen olmadan dengeli bir ağaca tüm bu yeniden düzenlemek için bir yol gerekir. Ben db yinelenen bir tablo oluşturma düşünmek ve görüntülemek veya başka Binaray ağacını oluşturmak için ikinci bir sorgu yapabilirsiniz rağmen, ben içine bu gibi düz bir ağaç yeniden mümkün olabilir düşündüm:

        0 
      /   \ 
     1     2 
    / \   / \ 
   3   4 5   6
  /
 7

Soldan sağa. 0 ebeveyn veya super_parent 0000 temsil eder.

Ben bunu yapmak istiyorum nedeni, benim projede başka bir algoritmanın temeli olacak orijinal ağacından sanal ağacı oluşturabilirsiniz olduğunu.

Şimdiden teşekkürler.

Şilin

0 Cevap