理論上實現(xiàn)真正意義的無限級別菜單
Jun 21, 2016 am 09:11 AM菜單
很久沒用php了,為了加深數(shù)據(jù)結(jié)構(gòu)的基本知識(為考試準備),練習一下基本的算法,當然還是為了以后使用php做菜單的時候免得麻煩。
算法:數(shù)據(jù)結(jié)構(gòu)中的最基本的樹與二叉樹的轉(zhuǎn)換
大家湊合著看吧!因為只是為了熟悉一下算法,沒有做具體的測試,同時對數(shù)據(jù)庫的操作沒有封裝成類,大家如果需要可以自行修改或者和我聯(lián)系!
Your data must save like this:
id,topic,child_l,parent,child_r,content
file name:
show.inc.php
codes:
==================================================
class shows{
????var $items;
????var $the_stack;
????var $count=0;
????
????function find($l_value) {
????????for($j=1;$jitems["info_all"];$j++) {
????????????if($l_value==$this->items["d_id][$j]"])
????????????{ return($j);exit; }
????????
????????}
????????????
????}
????????
????????
????function m_l_r_list($i) {
????
????????if(($this->items["f_node][$i]"]==0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]!=-1))
????????{//if it is root node!!!
????????????echo "
"; ????????????echo " ![]() ????????????echo "pages_0($this->items["d_id][$i]"])."?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"].""; ????????????echo " items["d_id][$i]"]." target=\"rightFrame\">Add"; ????????????echo " |
????????????echo "
????????????$i=$this->find($this->items["l_node][$i]"]);
????????????$this->count=$this->count+2;
????????????$this->m_l_r_list($i);
????????????exit;
????????}
????????if(($this->items["f_node][$i]"]==0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]==-1))
????????{
????????????exit;
????????}
?????????if(($this->items["f_node][$i]"]!=0)&&($this->items["r_node][$i]"]!=0)&&($this->items["l_node][$i]"]!=0))
?????????{//if node have left and right child
?????????????$current_node=$this->items["d_id][$i]"];
?????????????
?????????????if(($this->items["l_node][$i]"]==-1)&&($this->items["r_node][$i]"]==-1)) {
????????????????$i=$this->find($this->items["f_node][$i]"]);
????????????????if(($this->items["r_node][$i]"]==$current_node)) {//his parent use right point
????????????????????$this->items["r_node][$i]"]=-1;
????????????????}
????????????????if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point
????????????????????$this->items["l_node][$i]"]=-1;
????????????????}
????????????????$this->count=$this->count-2;
????????????????$this->m_l_r_list($i);
????????????}//if left child and right child have been visited up to his parent node
????????????
?????????????if(($this->items["l_node][$i]"]!=-1)&&($this->items["r_node][$i]"]!=-1)) {
????????????????echo "
"; ????????????????for ($k=0;$kcount;$k++) { echo " ";} ????????????????echo " ![]() ????????????????echo "items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"].""; ????????????????//echo $this->items["node_value][$i]"]; ????????????????echo " items["d_id][$i]"]." target=\"rightFrame\">Add"; ????????????????echo " items["d_id][$i]"].">Del"; ????????????????echo " |
????????????????echo "
????????????????$i=$this->find($this->items["l_node][$i]"]);//visite left child node
?????????????????$this->count=$this->count+2;
?????????????????$this->m_l_r_list($i);
????????????}//if left child node and right child node have not been visited
?????????????
?????????????if(($this->items["l_node][$i]"]==-1)&&($this->items["r_node][$i]"]!=-1)) {
?????????????????$i=$this->find($this->items["r_node][$i]"]);//visite right child node
?????????????????$this->m_l_r_list($i);
????????????}//if left child node have been visited and right child node have not been visited?????
?????????????
?????????}
?????????
????????if(($this->items["f_node][$i]"]!=0)&&($this->items["r_node][$i]"]==0)&&($this->items["l_node][$i]"]!=0))
????????{//if node only have left child
????????????$current_node=$this->items["d_id][$i]"];
????????????if($this->items["l_node][$i]"]!=-1) {
????????????????echo "
"; ????????????????for ($k=0;$kcount;$k++) { echo " ";} ????????????????echo " ![]() ????????????????echo "items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"].""; ????????????????//echo $this->items["node_value][$i]"]; ????????????????echo " items["d_id][$i]"]." target=\"rightFrame\">Add"; ????????????????echo " items["d_id][$i]"].">Del"; ????????????????echo " |
????????????????echo "
????????????????$i=$this->find($this->items["l_node][$i]"]);//visite left child node
????????????????$this->count=$this->count+2;
????????????????$this->m_l_r_list($i);
????????????????exit;
????????????}//if his left child node have not been visited
????????????
????????????if($this->items["l_node][$i]"]==-1) {
????????????????echo "
????????????????$i=$this->find($this->items["f_node][$i]"]);
????????????????if(($this->items["r_node][$i]"]==$current_node)) {//his parent use right point
????????????????????$this->items["r_node][$i]"]=-1;
????????????????}
????????????????if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point
????????????????????$this->items["l_node][$i]"]=-1;
????????????????????$this->count=$this->count-2;
????????????????}
????????????????$this->m_l_r_list($i);
????????????????exit;
????????????}//if his left child node have been visite,up to his parent node
????????????
????????}
????????if(($this->items["f_node][$i]"]!=0)&&($this->items["r_node][$i]"]!=0)&&($this->items["l_node][$i]"]==0))
????????{//if node only have right child
????????????$current_node=$this->items["d_id][$i]"];
????????????$j=$this->find($this->items["f_node][$i]"]);
????????????if($this->items["r_node][$i]"]!=-1) {
????????????????echo "
"; ????????????????for ($k=0;$kcount;$k++) { echo " ";} ????????????????echo "items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"].""; ????????????????//echo $this->items["node_value][$i]"]; ????????????????echo " items["d_id][$i]"]." target=\"rightFrame\">Add"; ????????????????echo " items["d_id][$i]"].">Del"; ????????????????echo " |
????????????????$i=$this->find($this->items["r_node][$i]"]);//visite right child node
????????????????$this->m_l_r_list($i);
????????????????exit;
????????????}//if his right child node have not been visited
????????????
????????????if($this->items["r_node][$i]"]==-1) {
????????????????$i=$this->find($this->items["f_node][$i]"]);
????????????????if(($this->items["r_node][$i]"]==$current_node)) {//his parent use right point
????????????????????$this->items["r_node][$i]"]=-1;
????????????????}
????????????????if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point
????????????????????$this->items["l_node][$i]"]=-1;
????????????????????$this->count=$this->count-2;
????????????????}
????????????????$this->m_l_r_list($i);
????????????????exit;
????????????}//if his right child node have been visite,up to his parent node
????????????
????????????
????????}
????????if(($this->items["f_node][$i]"]!=0)&&($this->items["l_node][$i]"]==0)&&($this->items["r_node][$i]"]==0))
????????{//if this node haven't child node,print it and up to his parent
?????????//node his parent left or right child have been visited
????????????$current_node=$this->items["d_id][$i]"];
????????????$j=$i;
????????????$i=$this->find($this->items["f_node][$i]"]);//up to parent
????????????//echo $this->items["l_node][$i]"];
????????????if(($this->items["r_node][$i]"]==$current_node)) {//his parent use right point
????????????????echo "
"; ????????????????for ($k=0;$kcount;$k++) { echo " ";} ????????????????echo "items["d_id][$j]"]."\" target=\"rightFrame\">".$this->items["node_value][$j]"].""; ????????????????//echo $this->items["node_value][$j]"]; ????????????????echo " items["d_id][$j]"]." target=\"rightFrame\">Add"; ????????????????echo " items["d_id][$j]"].">Del"; ????????????????echo " |
????????????????echo "
????????????????$this->items["r_node][$i]"]=-1;
????????????????????
????????????}
????????????if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point
????????????????
????????????????echo "
"; ????????????????for ($k=0;$kcount;$k++) { echo " ";} ????????????????echo "items["d_id][$j]"]."\" target=\"rightFrame\">".$this->items["node_value][$j]"].""; ????????????????//echo $this->items["node_value][$j]"]; ????????????????echo " items["d_id][$j]"]." target=\"rightFrame\">Add"; ????????????????echo " items["d_id][$j]"].">Del"; ????????????????echo " |
????????????????echo "
????????????????$this->items["l_node][$i]"]=-1;
????????????????$this->count=$this->count-2;
????????????????
????????????}
????????????$this->m_l_r_list($i);
????????????exit;
????????}
????
????}
????
????function pages_0($d_id){//
????????include("conn_db.php");
????????$Sql_Query="select * from node_page where d_id=$d_id";
????????$Query_Db=mysql_query($Sql_Query,$Connect);
????????$MyPage=mysql_fetch_array($Query_Db);????????????
????????include("conn_close.php");
????????if($MyPage["d_page"]!='')
????????????{
????????????????return $MyPage["d_page"];
????????????}????
????????else return "init.php";
????????}
????function pages($d_id){//
????????include("conn_db.php");
????????$Sql_Query="select * from node_page where d_id=$d_id";
????????$Query_Db=mysql_query($Sql_Query,$Connect);
????????$MyPage=mysql_fetch_array($Query_Db);????????????
????????include("conn_close.php");
????????return $MyPage["d_page"];
????????}????
????????
????function showinfo_0($status){//
????????include("conn_db.php");
????????$Sql_Query="select * from department order by d_id";
????????$Query_Db=mysql_query($Sql_Query,$Connect);
????????$info_all=mysql_num_rows($Query_Db);
????????$this->items["info_all"]=$info_all;
????????if($status==1) {//when status=1 show all data gets from database
????????????$MNums=$info_all;
????????????}
????????if($status==0) {//when status=0 show 6 messages gets from database
????????????$MNums=6;
????????????}
????????for($i=1;$i????????????{
????????????$Messages=mysql_fetch_array($Query_Db);
????????????$this->items["d_id][$i]"]=$Messages["d_id"];
????????????$this->items["f_node][$i]"]=$Messages["f_node"];
????????????$this->items["node_value][$i]"]=$Messages["node_value"];
????????????$this->items["l_node][$i]"]=$Messages["l_node"];
????????????$this->items["r_node][$i]"]=$Messages["r_node"];
????????????}
????????include("conn_close.php");
????????}????
}

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Windows 11? ???? ??? ???? ??? ??????. ???? ?????? ?? ? ???? ?? ??? ?? ??? ????? ??? ? ????. ? ?????? Windows ?? ???? ??? ???? ???? ??? ??? ? ??? ?? ??? ??? ?????. ? ??? ??? ???? ??? ?????? +? ?? ?? ?? ???. Windows?? ???? ???? ?? ??? ?????. ?? ?? ? ??? ?? ? 11" Width="643" Height="500" > ?? ??? ? ? ???? ?? ?? ?? ??? ?? ?? ?? ???? ?????. ?? ?? ? ?? ???? ?? ??? ????? ?? ??? ?? ???? ?? ??? ????? ?? ??? ?? ???? ?? ??? ???.

??? ??? "??? ???? PIN ??? ?????"?? ???? ?????. ?? ?? ??? ??? ? ?? ?? ?? ?? ??? ???? ????? PIN ?? ??? ??? ?? ?????. ??? ?? ??? ???? Windows? ???? ?? ?????? ?? ???? ???? ????. ?? ?? ?? ????. ??? ??? ???? ???? ?? ??? ???? ?????. ???? Windows 11?? PIN? ????? ???? ??? ?????? ??? ??? ??? ???? ?? ? ???? ?? ???? ?? ?? ?? ?????. ??? ????? ???? ??? ? ? ????! ?? ?? ??? ?? ?? ???? ??? ????? ?? ?? ??? ??? ? ????. ?? ??

????? Windows 11? ?? ??? ??? ??? ???/?? ??? ?? ????. ??? ??? ???? ??? ? ????. ? ?????? ?? ???? ???? ??? ????? ????? ????? ??? ? ?? ??? ?? ??? ??? ?????. ?? ?? ??? ?? ?? ??? ??? ??? ? ????? ?, ?? ?? ???? ?? ?? ?? ??? ??? ????? ????? ???? ???? ??? ?? ?? ??? ??? ??? ? ????. ??? ??? ????? ?? ???? ?????. Windows 11?? ?? ??? ??? ???? ??? ?????? 1. ?? ?? ???? +? ?? ?? ?? ???. Windows"?? ??"?? ??? ??

?? ??? ???? ???? ?? ??? ??? ???? ??? ???? ? ?? ????. ? ?? ?? ??? ?? ???? ????? ???? ??? ??? ?? ? ? ??? ?? ????. ? ?? ??? ? ?? ??? ???? ????? ????. ??? ??? ???? ?? ? ?? ??? ?? ??? ?????? ??? ????????. ??? ???? ??? ?? ??? ? ?? ?? ??? ??? ?? ???? ? ????. Windows 11?? ?? ??? ??? ?? ??? ????? ??? ?????? 1. ?? ?? ???? ?? ??? ??? ?????. Windows??? ???? ???? ??? ?????. ?? ??? ??? ?????. ?? ??? ???? ?? ???? ??? ?????. "?? ??"? ?????.

Windows Installer ???? "OOBELANGUAGE" ?? ?? "??? ??????."? ?????? ??? ??? ?? Windows ??? ???? ??? ????. OOBE? ?? ?? ??? ??? ?????. ?? ????? ? ? ??? ?? OOBE ?? ??? ??? ?????. ??? ??? ????. OOBE ?? ???? ?????? ???? ? ??? ??? ? ????. ?? ?? – 1. OOBE ? ??? ?? “?? ??” ??? ?????. ??? ? ??? ?? ?? ????? ?????. 2. ?? ??? ???? ???? ?? ?????. ???? ?? ??? ? OOBE? ????? ???. 3. ????? ??? ??? ????. ???? ???? OOBE? ?? ??? ?????.

?? ??? ?? ??? ??? ??? ? ???? ????, ?? ??? ??? ? ? ?? ?????. ?? ??? ???, ???? ???, ???? ?? ????? ?? ? ??? ???. ??? ??? ?? ?? ??? ??? ? ???, ?? ??? UI ??? ??? Windows 11??? ?? ?????. ??? ???? ? ??? ?? ?? Windows 11?? ??? ???? ?? ??? ??? ????. Windows 11?? ??? ???? ?? [10?? ??] ?? ??? ???? ?? ??? ???? Windows 11?? ??? ??? ? ????. ???? ?? ???? ???? ???? ???? ???? ?????. ????. ?? 1: ?? ?? ?? ?? ??? ???? ? ????.

Windows 11? ????? ?? ??? ???? ?? ??? ?? ?? ???? ??? ????. ? ???? ???? ??? ??, ?? ???? ???? ??? ????. ??? ??? ?? ??? ????? ??? ??? ?????. ??? ?? ?? ???? ???? ??? ?? ??? ?? ? ???? ???? ? ???? ??? ??? ??? ????? ?? ??? ???? ??? ??? ???. Custom Zoom? ??: ??? ???? ?? ??? ????? ??? ?????. ? ?? ???? ? ?? ?? ? ? ??? ?????. ?? ??? ? ?? ?????? ???? ??? ?? ?? ???? ??? ? ????. ??? ????? ??? ????? ? ??? ? ? ????. ?? ?? ??? ??? ? ????? ??? ? ????. ??? 11? ???? ??

Windows? ?? ?? ?????? ??? ? ?? ?? 0xc004f069? ??? ?? ???? ???? ??? ????. ??? ????? ????? ?????? Windows Server? ???? ?? ?? ????? ? ??? ??? ? ????. ??? ?? ??? ???? ??? ???? ??? ?? ??? ?? ?? ???? ???? ??? ??????. ?? ?? - ?? ???? ??? ?? ????. ?? ?? ???? ?? ??????. Windows ?? ?? ????? ???? ?? ?????. ?? 1 – ????? ??? cmd ????? Windows Server Edition ???? ??????. 1?? – Windows Server ?? ?? ?? ???? ?? W ??? ???? ???.
