• <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人免费看| 亚洲另类春色校园小说| 无码人妻久久一区二区三区免费 | 亚洲精品456人成在线| 国产精品久久久久久久久免费| 亚洲视频在线观看一区| 99xxoo视频在线永久免费观看| 国产成人A人亚洲精品无码| A片在线免费观看| 久久亚洲AV成人无码软件 | 一本岛高清v不卡免费一三区| 亚洲日本香蕉视频观看视频| 999在线视频精品免费播放观看| 亚洲午夜电影在线观看| 女人被男人桶得好爽免费视频| 日本亚洲中午字幕乱码| 久久久青草青青国产亚洲免观| 国产做国产爱免费视频| 91亚洲精品视频| 成人免费看吃奶视频网站| 色吊丝免费观看网站| 亚洲精品乱码久久久久久久久久久久 | 99久久99久久精品免费观看 | 亚洲AV无码一区二区三区牲色| 成人亚洲网站www在线观看| 成人免费av一区二区三区| 久久亚洲精品无码aⅴ大香| 日韩免费视频在线观看| sss在线观看免费高清| 亚洲丁香色婷婷综合欲色啪| 成人a视频片在线观看免费| 一级毛片aa高清免费观看| 久久亚洲精品无码aⅴ大香| 日本免费一区二区三区最新vr| a在线观看免费视频| 亚洲中文字幕久久久一区| 久久综合亚洲色HEZYO国产| 国产一卡二卡四卡免费| 在线观看免费亚洲| 亚洲伦另类中文字幕|