簡體   English   中英

非遞歸動態二叉樹 PHP

[英]Non-recursive dynamic binary tree with PHP

我嘗試創建一個二叉樹作為 html 表,它不是遞歸構建。 字段的順序應該是這樣的:

C1  C2  C3

         7
     3
         8
 1
         9
     4
        10

        11
     5
        12
 2
        13
     6
        14

C1 代表 col 1,C2 代表 col2 等。下面的代碼以遞歸的方式創建一個表,但這不是我想要的!

<?php 
$cols = 4; 
$counter = 0;
$lines = pow(2,$cols); 

echo '<table border=1 style="border:1px solid black;"> ';

    for($i = 0; $i < $lines; $i++){
        echo '<tr>';
            for($j = 0; $j < $cols; $j++){
                $rowspan = $lines/pow(2,$j+1);
                    if(0 === $i%$rowspan) {
                        $counter++;
                        echo '<td rowspan='.$rowspan.'>'.$counter;
                    }
            }
    }

echo '</table>';
?> 

我希望有人能給我提示如何解決這個問題。

使用此表達式計算行的值: ($i / $rowspan + pow(2,$j+1) - 1)其中$i / $rowspan是當前級別中的行數,第一個從0開始row and pow(2,$j+1) - 1是級別的第一個值,即第三級別的7

$cols = 4;
$lines = pow(2,$cols);

echo '<table border=1 style="border:1px solid black;">';

    for($i = 0; $i < $lines; $i++){
        echo '<tr>';
            for($j = 0; $j < $cols; $j++){
                $rowspan = $lines/pow(2,$j+1);
                    if(0 === $i%$rowspan) {
                         echo "<td rowspan='$rowspan'>".
                             ($i/$rowspan + pow(2,$j+1)-1).
                         "</td>";
                    }
            }
    }

echo '</table>';

輸出你想要的結果。 希望你的老師現在不會恨我; ;-)

如果您不想依賴 $rowspan,您可以交替使用($i/$lines + 1 ) * pow(2,$j+1) - 1作為行的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM