• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

        理論上完成真正意義的無限級別菜單

        理論上完成真正意義的無限級別菜單

        更新時間:2019-06-21 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        很久沒用php了,為了加深數(shù)據(jù)結(jié)構(gòu)的基本知識(為考試準(zhǔn)備),練習(xí)一下基本的算法,當(dāng)然還是為了以后使用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;$j<=$this->items["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 "<table><tr><td>";
        echo "<img id=image".$i." src=http://cfan.net.cn/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
        echo "<a href=\"".$this->pages_0($this->items["d_id][$i]"])."?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
        echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo "</td></tr>";
        echo "<div class=collapsed id=".$i."ALL>";
        $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 "<table><tr><td>";
        for ($k=0;$k<$this->count;$k++) { echo " ";}
        echo "<img id=image".$i." src=http://cfan.net.cn/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
        echo "<a href=\"main.php?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
        //echo $this->items["node_value][$i]"];
        echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo " <a href=delnode.php?id=".$this->items["d_id][$i]"]."><font size=2 color=red>Del</font></a>";
        echo "</td></tr>";
        echo "<div class=collapsed id=".$i."ALL>";
        $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 "<table><tr><td>";
        for ($k=0;$k<$this->count;$k++) { echo " ";}
        echo "<img id=image".$i." src=http://cfan.net.cn/"c.gif\" onclick=outliner() style=\"cursor:hand\" child=\"".$i."ALL\" NAME=\"NAME_".$i."ALL\">";
        echo "<a href=\"main.php?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
        //echo $this->items["node_value][$i]"];
        echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo " <a href=delnode.php?id=".$this->items["d_id][$i]"]."><font size=2 color=red>Del</font></a>";
        echo "</td></tr>";
        echo "<div class=collapsed id=".$i."ALL>";
        $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 "</div>";
        $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 "<table><tr><td>";
        for ($k=0;$k<$this->count;$k++) { echo " ";}
        echo "<a href=\"main.php?d_id=".$this->items["d_id][$i]"]."\" target=\"rightFrame\">".$this->items["node_value][$i]"]."</a>";
        //echo $this->items["node_value][$i]"];
        echo " <a href=addnode.php?id=".$this->items["d_id][$i]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo " <a href=delnode.php?id=".$this->items["d_id][$i]"]."><font size=2 color=red>Del</font></a>";
        echo "</td></tr>";
        $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 "<table><tr><td>";
        for ($k=0;$k<$this->count;$k++) { echo " ";}
        echo "<a href=\"main.php?d_id=".$this->items["d_id][$j]"]."\" target=\"rightFrame\">".$this->items["node_value][$j]"]."</a>";
        //echo $this->items["node_value][$j]"];
        echo " <a href=addnode.php?id=".$this->items["d_id][$j]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo " <a href=delnode.php?id=".$this->items["d_id][$j]"]."><font size=2 color=red>Del</font></a>";
        echo "</td></tr>";
        echo "</div>";
        $this->items["r_node][$i]"]=-1;

        }
        if(($this->items["l_node][$i]"]==$current_node)) {//his parent use left point

        echo "<table><tr><td>";
        for ($k=0;$k<$this->count;$k++) { echo " ";}
        echo "<a href=\"main.php?d_id=".$this->items["d_id][$j]"]."\" target=\"rightFrame\">".$this->items["node_value][$j]"]."</a>";
        //echo $this->items["node_value][$j]"];
        echo " <a href=addnode.php?id=".$this->items["d_id][$j]"]." target=\"rightFrame\"><font size=2 color=red>Add</font></a>";
        echo " <a href=delnode.php?id=".$this->items["d_id][$j]"]."><font size=2 color=red>Del</font></a>";
        echo "</td></tr>";
        echo "</div>";
        $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<=$MNums;$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");
        }
        }

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲精品无码久久久久秋霞| 婷婷亚洲综合五月天小说| 在线精品亚洲一区二区| 无码av免费毛片一区二区| 亚洲男人的天堂在线| 18禁网站免费无遮挡无码中文 | 亚洲中文字幕久久精品无码2021| 99视频在线免费看| 亚洲欧洲精品久久| 99国产精品永久免费视频 | 日本一道本高清免费| 亚洲爆乳少妇无码激情| 免费一看一级毛片人| 国产免费AV片在线观看播放| 亚洲爆乳精品无码一区二区三区| 久久九九AV免费精品| 亚洲电影免费观看| 日韩精品视频免费在线观看| 精品国产日韩亚洲一区在线| 亚洲成A∨人片天堂网无码| 中文字幕一区二区三区免费视频| 久久亚洲国产成人亚| 无码一区二区三区AV免费| 国产精品亚洲片在线花蝴蝶| 久久精品国产精品亚洲人人| 在线成人精品国产区免费| 亚洲中文字幕久在线| 内射无码专区久久亚洲| 大地资源网高清在线观看免费| 亚洲天堂一区二区三区| 手机看片久久国产免费| a级在线免费观看| 亚洲Av高清一区二区三区| 亚洲精品国产高清嫩草影院| 国产午夜精品久久久久免费视| 久久精品国产亚洲av麻豆图片 | 好爽…又高潮了免费毛片| 一日本道a高清免费播放| 亚洲剧场午夜在线观看| yy6080亚洲一级理论| 5g影院5g天天爽永久免费影院|