【问题标题】:recursive function using php for getting level in binary tree使用php获取二叉树级别的递归函数
【发布时间】:2018-05-28 03:00:26
【问题描述】:

我想在二叉树中获得水平。我已经得到了树和插入点,但是在获得配对匹配和水平方面存在问题。附上二叉树图像 here

如何在第 3 级之后停止递归函数。

我的代码如下

function getTree($parent_id, $level){
  global $conn;
  $sql2 = "SELECT * FROM user WHERE parent_id='".$parent_id."' ORDER BY `rightorleft`";
  $result2 = $conn->query($sql2);
  $i=0;
  static $calls=0;
  if (mysqli_num_rows($result2) > 0)
  {
    echo "<ul>";
    while ($row2 = mysqli_fetch_object($result2))
    {
        echo '<li>';
        echo '<div><a href="#"><img src="images/user.png" width="40" height="40"><br>'.$row2->user_id.'</a></div>';
        getTree($row2->id,$level++);   
        echo '</li>'; 
    }
    echo "</ul>";
   }
}

我只想获得 2 个级别的结果,例如 this

【问题讨论】:

    标签: php html recursion


    【解决方案1】:

    尝试使用$level 作为计数器来停止递归调用。

    通过使用$level = 3 调用函数应该会给你想要的结果。

    function getTree($parent_id, $level)
    {
        global $conn;
    
        // Stop when $level is 0 or less
        if($level <= 0) return ;
    
        $sql2 = "SELECT * FROM user WHERE parent_id='".$parent_id."' ORDER BY `rightorleft`";
        $result2 = $conn->query($sql2);
        $i = 0;
        static $calls = 0;
        if (mysqli_num_rows($result2) > 0)
        {
    
            echo "<ul>";
            while ($row2 = mysqli_fetch_object($result2))
            {
                echo '<li>';
                echo '<div><a href="#"><img src="images/user.png" width="40" 
                height = "40" >< br > '.$row2->user_id.' </ a ></ div > ';
    
                // Recursively go deeper, use $level-1 here
                getTree($row2->id,$level-1);
                echo '</li>';
            }
            echo "</ul>";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2016-07-24
      • 1970-01-01
      • 2015-07-25
      • 2013-07-23
      相关资源
      最近更新 更多