通过使用php和mysql以递归方式提供赞助者ID来查找父母ID

时间:2019-02-07 18:35:28

标签: php mysql binary-tree

我目前正在尝试制作二叉树,并且目前我的SQL表结构如下

Node_ID  Parent_ID  Node_Position  SID     
-------  ---------  -------------  --------
      1          0  T                      
      2          1  L              1       
      3          1  R              1       
      4          2  L              1       
      5          2  R              1       
      6          3  L              1       
      7          3  R              1       
      8          4  L              1       
      9          4  R              1       
     10          5  L              1       
     11          5  R              1       
     12          8  L              1       

创建下面的手工制作的树,这里是an image link

                                1 
                             /    \
                            2       3
                           / \      / \
                          4   5     6  7
                        /\    / \   
                        8 9   10 11
                       /
                      12


在这棵树中,当我同时填写ID为4和5的两个孩子时,我得到的是到目前为止,而不是得到SID 1的下一个父ID(即6),而是得到父ID为8,而不是二叉树的行为

用于根据发起人ID获取新孩子的父母ID的php代码。到目前为止,我所做的是以下

function getNodeInsertPostionByParentId($parentId){
$position = array('status'=>false);
        $parents = array();
        foreach($parentId as $parent){              
                $qry = "select Node_ID,Node_Position from tblregister where Parent_ID =".$parent." order by Node_Position asc";
                $rst = mysql_query($qry);
                $count = mysql_num_rows($rst);
                if($count==2){
                    while($row = mysql_fetch_assoc($rst)){
                        $parents[$parent][] = $row['Node_ID'];
                    }   
                }elseif($count==1){
                    $position['status'] = true;
                    $position['parentId'] = $parent;
                    $position['node'] = 'R';
                    //echo '<pre>1';print_r($position);echo '</pre>';
                    return $position;
                }else{
                    $position['status'] = true;
                    $position['parentId'] = $parent;
                    $position['node'] = 'L';
                    //echo '<pre>2';print_r($position);echo '</pre>';
                    return $position;
                }
            }

        return searchByParents($parents);
    }


    function searchByParents($parents){

        foreach($parents as $parent){
            return getNodeInsertPostionByParentId($parent);  
        }
    } 

getNodeInsertPostionByParentId(array('1'));

实际上,到目前为止,我正在尝试基于SID获得新的孩子父母ID。我不知道该怎么办 。 。 。我在想是否应该检查该关卡是否包含所有孩子。 。或者有另一种方法可以解决这个问题

0 个答案:

没有答案