[英]Recursive Function to Traverse Binary Tree
我有 mySQL 表,如:
userid left_refid right_ref_id
1 3 4
3 5 6
等等。 我想遍历二叉树并显示所有用户 ID,以及左右参考 ID。
这是我使用的代码,但它连续打印134 。
function display_childs($parent) {
//$result = mysql_query("SELECT title FROM tree WHERE parent=".$parent.'";');
global $wpdb;
$prefix=$wpdb->prefix;
if($parent==0){
$parent=3;
}
$user_ref_1 = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_user_reference WHERE user_id=".$parent."" ));
foreach($user_ref_1 as $urd)
{
echo $urd->user_id;
echo $urd->left_zone_id;
echo $urd->right_zone_id;
echo '<br>';
$user_idpass=$urd->user_id;
}
display_childs($user_idpass);
unset($user_idpass);
unset($parent);
}
display_childs(0);
通常这棵树不支持递归,但您可以在 where 子句中尝试使用 between 运算符: select * from where left_ref_id between 3, 7 and right_ref_id between 3,7 以拉孩子。 查找嵌套集合表或 celko 树。
更新:您也可以尝试在 for 循环中递归调用 'display_childs($urd->left_zone_id) and
display_childs($ur->right_zone_id)`。
您当前的函数递归调用自身display_childs($user_idpass);
,但是这将始终使用“父”ID 调用,而不是“子”ID
在foreach
循环中,您还应该调用display_childs($urd->left_zone_id)
和display_childs($urd->right_zone_id)
(并删除对display_childs($user_idpass);
的调用)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.