[PHP] 使用PHP迭代表示二叉树的查找
发布时间:2021-05-21 06:54:09 所属栏目:大数据 来源: https://www.jb51.cc
导读:先用一个数组表示一个二叉树搜索树,也就是一个排好序的二叉树,其中左子结点根结点右子结点 利用结构数组的形式来表示,id,left,right 代表结点id ,左子树 ,右子树 下面这个二维数组 $data []=['id'=8,'left'=2,'right'=10,'data'='test' ]; $data []=['i
先用一个数组表示一个二叉树搜索树,也就是一个排好序的二叉树,其中左子结点<根结点<右子结点 利用结构数组的形式来表示,id,left,right 代表结点id ,左子树 ,右子树 下面这个二维数组 $data[]=['id'=>8,'left'=>2,'right'=>10,'data'=>'test']; $data[]=['id'=>2,'left'=>1,'right'=>0,'data'=>'test1'$data[]=['id'=>10,'left'=>0,'data'=>'test2'$data[]=['id'=>1,'data'=>'test3']; 转换成成多维的树结构 $root=8; $tree=[]; //遍历 foreach($data as $k=>$v){ $refer[$v['id']]=&$data[$k];为每个数组成员建立对应关系 } 遍历2 ){ $left=&$v['left']]; $right=&$v['right'$k]['left']=&$left; $k]['right']=&$right; } 遍历3 ){ if($v['id']==$root$tree=; break; } } 结果是: Array ( [id] => 8 [left] => ( [id] => 2 [left] => ( [id] => 1 [left] => [right] => [data] => test3 ) [right] => [data] => test1 ) [right] => ( [id] => 10 [left] => [right] => test2 ) [data] => test ) 使用迭代的方式来查找,如果值比当前结点小,就把左子树赋给当前树 ,如果大就把右子树赋给当前树 function find($tree,$idwhile(is_array($tree)){ $id<$tree['id']){ $tree['left']; }elseif($id>$tree['right'else{ return ; } } return false; } 结果是: $r=find(); ( [id] => 2 ( [id] => 1 test3 ) [right] => [data] => test1 ) ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |