• <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中文字幕无码成人 | 国内自产少妇自拍区免费| 色噜噜综合亚洲av中文无码| 国偷自产一区二区免费视频| 亚洲国产精品一区二区成人片国内 | 亚洲精品综合在线影院| 免费做爰猛烈吃奶摸视频在线观看 | 水蜜桃视频在线观看免费播放高清 | 一级中文字幕免费乱码专区| 亚洲日本一区二区一本一道| 久久一区二区三区免费| 国产色爽免费视频| 免费无码国产V片在线观看| 亚洲日韩在线观看免费视频| 韩国免费A级毛片久久| 亚洲成年轻人电影网站www| 免费福利视频导航| 亚洲人成人伊人成综合网无码| 国产免费牲交视频| 亚洲精品视频在线观看视频| 91在线品视觉盛宴免费| 亚洲国产成人AV网站| 丁香五月亚洲综合深深爱| 99精品在线免费观看| 色偷偷亚洲女人天堂观看欧| 国产一级一片免费播放| 二区久久国产乱子伦免费精品| 精品亚洲成a人片在线观看| 免费黄色毛片视频| 免费无码又爽又刺激一高潮| 亚洲另类春色校园小说| 久久久国产精品福利免费| 亚洲性猛交xx乱| 亚洲成?Ⅴ人在线观看无码| 久久午夜羞羞影院免费观看| 亚洲a∨无码精品色午夜| 亚洲成人精品久久| 国产成人免费高清在线观看| 亚洲免费观看视频| 国产精品亚洲а∨无码播放不卡 | 特级毛片aaaa免费观看|