二叉樹排序算法

QQ圖片20170531140512.png

真的是寫了好久
其中算法繞死人~
不過靜下心來好好地一步一步研究泣栈,然后寫出來還是非常有成就感滴O(∩_∩)O~~
接下來把代碼記錄下來以便自己后來再回顧~

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<style type="text/css">
.OrgBox{
font-size:12px;
padding:5px 5px 5px 5px;
clear:left;
float:left;
text-align:center;
position:absolute;
}
.OrgBox div{
color:#FFA500;
font-weight:800;
}

</style>
<script type="text/javascript">
    function offset(node){
        var x = node.offsetLeft;
        var y = node.offsetTop;
        var w = node.offsetWidth;
        var h = node.offsetHeight;
        var parent = node.offsetParent;
        while (parent != null){
            x += parent.offsetLeft;
            y += parent.offsetTop;
            parent = parent.offsetParent;
        }
        if(w==0){
            w+=parseInt(node.currentStyle.width);
            w+=parseInt(node.currentStyle.paddingRight);
            w+=parseInt(node.currentStyle.paddingLeft);
            w+=parseInt(node.currentStyle.borderWidth) * 2;
        }
        if(h==0){
            h+=parseInt(node.currentStyle.height);
            h+=parseInt(node.currentStyle.paddingTop);
            h+=parseInt(node.currentStyle.paddingBottom);
            h+=parseInt(node.currentStyle.borderWidth) * 2;
        }
        return {x: x, y: y, w: w, h: h};
    }
     
    function OrgNode(){
        this.Text=null;
        this.Link=null;
        this.Description=null;
        this.BoxWidth=null;
        this.BoxHeight=null;
        this.parentNode=null;
        this.NodeGroupId=null; //同一層的級(jí)別序號(hào),從零開始
        this.NodeOrderId=null; //同一級(jí)中的序號(hào),從零開始
        this.TopLine=null;
        this.BottomLine=null;
        this.Depth=null;
        this.Top=null;
        this.Left=null;
        this.Type=null;
        this.Nodes=[];
        this.customParam=[]; //節(jié)點(diǎn)自定義參數(shù)
        var This=this;
        this.Nodes.Add=function(OrgNode_){
            OrgNode_.parentNode=This;
            This.Nodes[This.Nodes.length]=OrgNode_;
        }
        this.Box=null;
        this.Templet=null;
        this.Id="OrgNode_"+ GetRandomId(20);
         
        this.inIt= function(parent){
            if(this.inIted==true)return;
            var tempDiv=document.createElement("DIV");
            parent.appendChild(tempDiv);
            var tempHTML=this.Templet;
            tempHTML=tempHTML.replace("{Id}", this.Id);
            tempHTML=tempHTML.replace("{Text}", this.Text);
            for(var Param_ in  this.customParam){
                tempHTML=tempHTML.replace("{"+ Param_ +"}", this.customParam[Param_]);
            }
            tempDiv.innerHTML=tempHTML;
            this.Box=document.getElementById(this.Id);
             
            if(this.BoxWidth!=null){
                if(offset(this.Box).w < this.BoxWidth){
                    this.Box.style.width=this.BoxWidth +"px";
                    if(offset(this.Box).w > this.BoxWidth){
                        this.Box.style.width=(this.BoxWidth - (offset(this.Box).w - this.BoxWidth)) +"px";
                    }
                }
            }
             
            if(this.BoxHeight!=null){
                if(offset(this.Box).h < this.BoxHeight){
                    this.Box.style.height=this.BoxHeight +"px";
                    if(offset(this.Box).h > this.BoxHeight){
                        this.Box.style.height=(this.BoxHeight - (offset(this.Box).h - this.BoxHeight)) +"px";
                    }
                }
            }
     
            this.Width=offset(this.Box).w;
            this.Height=offset(this.Box).h;
            this.inIted=true;
        }
     
        function GetRandomId(n_){
            var litter="abcdefghijklmnopqrstuvwxyz"
            litter+=litter.toUpperCase()
            litter+="1234567890";
            var idRnd="";
            for(var i=1; i<=n_; i++){
                idRnd+=litter.substr((0 + Math.round(Math.random() * (litter.length - 0))), 1)
            }
            return idRnd;
        }
    }
     
    function OrgShow(OrgNode_){
        this.parent=document.body;
        this.LineSize=2;
        this.LineColor="#000000";
     
        this.IntervalWidth=100;
        this.IntervalHeight=50;
        this.Top=0;
        this.Left=0;
        this.Depth=0;
        this.Nodes=[];
        this.DepthGroup=[]; //this.DepthGroup[n].Nodes 層深節(jié)點(diǎn)集合
        //this.DepthGroup[n].NodeGroups[m]  層深節(jié)點(diǎn)按上層分類集合 this.DepthGroup[n].NodeGroups[m][k]層深節(jié)點(diǎn)
        var This=this;
        this.BoxWidth=null;
        this.BoxHeight=null;
        this.BoxTemplet=null;
        this.ShowType=null;
     
        this.Run=function(){
            BoxInit(OrgNode_, this.parent);
            GetDepth(OrgNode_);
            SetDepthsHeight()//設(shè)置層深高度
             
            //***************************
            for(var n=1; n<=this.Depth; n++){//設(shè)置頂距離
                var tempTop=this.Top + GetDepthHeightToRoot(n);
                var tempNodes=this.DepthGroup[n].Nodes;
                for(var m=0; m<tempNodes.length; m++){
                    tempNodes[m].Top=tempTop;
                }
            }
     
            //***************************
            for(var n=this.Depth; n>=1; n--){//設(shè)置左距離
                var DepthNodes=this.DepthGroup[n].Nodes;
                if(n==this.Depth){
                    for(var m=0; m<DepthNodes.length; m++){
                        if(m==0){
                            DepthNodes[m].Left=0;
                        }else{
                            DepthNodes[m].Left=DepthNodes[m-1].Left + DepthNodes[m-1].Width + this.IntervalWidth;
                        }
                    }
                }else{
                    for(var m=0; m<DepthNodes.length; m++){
                        if(DepthNodes[m].Nodes.length!=0){
                            var tempNodeLeft_=DepthNodes[m].Nodes[0].Left + (GetGroupWidthByNode(DepthNodes[m].Nodes[0]) / 2);
                            tempNodeLeft_-=(DepthNodes[m].Width / 2);
                            DepthNodes[m].Left = tempNodeLeft_;
                        }
                    }
                    for(var m=0; m<DepthNodes.length; m++){
                        if(DepthNodes[m].Left==null){
                            SetLeftByDepthNode(DepthNodes, m, "LTR");
                        }
                    }
                }
            }
            SetDepthGroupWidth();//設(shè)置群組寬度
     
            var MaxLeftValue=this.Nodes[0].Left;
            for(var n=1; n<this.Nodes.length; n++){//取得最小左距離
                if(MaxLeftValue>this.Nodes[n].Left){
                    MaxLeftValue=this.Nodes[n].Left;
                }
            }
            MaxLeftValue=(-MaxLeftValue) + this.Left;
            for(var n=0; n<this.Nodes.length; n++){//重新設(shè)置距離
                this.Nodes[n].Left+=MaxLeftValue;
                this.Nodes[n].Box.style.left=this.Nodes[n].Left + "px"
                this.Nodes[n].Box.style.top=this.Nodes[n].Top + "px"
            }
             
             
            //***************************
            for(var n=1; n<=this.Depth; n++){//設(shè)置豎線條
                var tempNodes=this.DepthGroup[n].Nodes;
                for(var m=0; m<tempNodes.length; m++){
                    if(n!=this.Depth){//設(shè)置底線條
                        if(tempNodes[m].Nodes.length!=0){
                            var tempLineLeft=tempNodes[m].Left + (tempNodes[m].Width / 2);
                            var tempLineHeight=((this.IntervalHeight - this.LineSize) / 2);
                            tempLineHeight+=(this.DepthGroup[n].Height - tempNodes[m].Height);
                            var tempLineTop=tempNodes[m].Top + tempNodes[m].Height;
                            var tempBottomLine=new CreateLine(2, tempLineTop, tempLineLeft, tempLineHeight, this.LineSize, this.LineColor, "LineBottom_"+ tempNodes[m].Id, this.parent);
                            tempNodes[m].BottomLine=tempBottomLine.Line;
                        }
                    }
                    if(n!=1){//設(shè)置頂線條
                        var tempLineLeft=tempNodes[m].Left + (tempNodes[m].Width / 2);
                        var tempLineHeight=((this.IntervalHeight - this.LineSize) / 2);
                        var tempLineTop=tempNodes[m].Top -  tempLineHeight;
                        if(this.DepthGroup[tempNodes[m].Depth].NodeGroups[tempNodes[m].NodeGroupId].length==1){//如果只有一個(gè)節(jié)點(diǎn)
                            var tempBottomLineHeight=parseFloat(tempNodes[m].parentNode.BottomLine.style.height) + this.LineSize;
                            tempNodes[m].parentNode.BottomLine.style.height=(tempLineHeight + tempBottomLineHeight)+"px";
                        }else{
                            var temptopLine=new CreateLine(2, tempLineTop, tempLineLeft, tempLineHeight, this.LineSize, this.LineColor, "LineTop_"+ tempNodes[m].Id, this.parent);
                            tempNodes[m].TopLine=temptopLine.Line;
                        }
                    }
                }
            }
             
            for(var n=2; n<=this.Depth; n++){//設(shè)置橫線條
                var tempNodeGroups_=this.DepthGroup[n].NodeGroups;
                for(var m=0; m<tempNodeGroups_.length; m++){
                    if(tempNodeGroups_[m].length!=1){
                        var tempLineWidth=tempNodeGroups_[m].Width - (tempNodeGroups_[m][0].Width / 2) + this.LineSize;
                        tempLineWidth-=(tempNodeGroups_[m][tempNodeGroups_[m].length-1].Width / 2);
                        var tempLineTop=tempNodeGroups_[m][0].Top - ((this.IntervalHeight - this.LineSize) / 2) - this.LineSize;
                        var tempLineLeft=tempNodeGroups_[m][0].Left + (tempNodeGroups_[m][0].Width / 2);
                        var tempGroupLine=new CreateLine(1, tempLineTop, tempLineLeft, tempLineWidth, this.LineSize, this.LineColor, "LineGroup_"+ tempNodeGroups_[m][0].Id, this.parent);
                    }
                }
            }
        }
        function GetGroupWidthByNode(Node_){//根據(jù)群組中任一節(jié)點(diǎn),取得群組寬度
            var tempNodesGroup_=This.DepthGroup[Node_.Depth].NodeGroups[Node_.NodeGroupId];
            var tempGroupWidth_=tempNodesGroup_[tempNodesGroup_.length-1].Left - tempNodesGroup_[0].Left;
            tempGroupWidth_+=tempNodesGroup_[tempNodesGroup_.length-1].Width
            return tempGroupWidth_;
        }
         
         
        function SetLeftByDepthNode(DepthNodes_, NodeId, Type){
            if(Type=="LTR"&&NodeId==DepthNodes_.length-1){
                SetLeftByDepthNode(DepthNodes_, NodeId, "RTL");
                return;
            }
            if(Type=="RTL"&&NodeId==0){
                SetLeftByDepthNode(DepthNodes_, NodeId, "LTR");
                return;
            }
            var FindIndex=null;
            if(Type=="LTR"){
                for(var r_=NodeId+1; r_<DepthNodes_.length; r_++){
                    if(DepthNodes_[r_].Left!=null){
                        FindIndex=r_;
                        break;
                    }
                }
                if(FindIndex==null){
                    SetLeftByDepthNode(DepthNodes_, NodeId, "RTL");
                    return;
                }else{
                    for(var r_=FindIndex-1; r_>=NodeId; r_--){
                        DepthNodes_[r_].Left=DepthNodes_[r_+1].Left - This.IntervalWidth - DepthNodes_[r_].Width;
                    }
                }
            }
            if(Type=="RTL"){
                for(var r_=NodeId-1; r_>=0; r_--){
                    if(DepthNodes_[r_].Left!=null){
                        FindIndex=r_;
                        break;
                    }
                }
                if(FindIndex==null){
                    SetLeftByDepthNode(DepthNodes_, NodeId, "LTR");
                    return;
                }else{
                    for(var r_=FindIndex+1; r_<=NodeId; r_++){
                        DepthNodes_[r_].Left=DepthNodes_[r_-1].Left + This.IntervalWidth + DepthNodes_[r_-1].Width;
                    }
                }
            }
        }
         
        function GetDepthHeightToRoot(DepthId){//取得距離頂層的高度
            var tempHeight_=0;
            for(var x_=DepthId; x_>=1; x_--){
                tempHeight_+=This.DepthGroup[x_].Height;
            }
            tempHeight_+=This.IntervalHeight * (DepthId - 1);
            tempHeight_-=This.DepthGroup[DepthId].Height;
            return tempHeight_;
        }
         
         
        function SetLeftPosByChildNode(Node_, ChildNode_){//根據(jù)下級(jí)節(jié)點(diǎn)位置設(shè)置節(jié)點(diǎn)位置
            var tempNodeGroups=This.DepthGroup[ChildNode_.Depth].NodeGroups[ChildNode_.NodeGroupId];
            var tempNodeLeft;
            if(tempNodeGroups.length==1){
                tempNodeLeft=((ChildNode_.Width / 2) + ChildNode_.Left) - (Node_.Width / 2);
            }else{
                tempNodeLeft=GetFirstLeftPos(ChildNode_) + (tempNodeGroups.Width / 2) - (Node_.Width / 2);
            }
            Node_.Left=tempNodeLeft;
        }
         
        function GetFirstLeftPos(Node_){//根據(jù)節(jié)點(diǎn)位置取得同一級(jí)中首個(gè)節(jié)點(diǎn)位置
            if(Node_.NodeOrderId==0){//Node_為首節(jié)點(diǎn)
                return Node_.Left;
            }
            var tempWidth=0;
            for(var k_=0; k_<=Node_.NodeOrderId; k_++){
                var tempGroupsNode=This.DepthGroup[Node_.Depth].NodeGroups[Node_.NodeGroupId][k_];
                tempWidth+=tempGroupsNode.Width;
            }
            tempWidth+=(Node_.NodeOrderId * This.IntervalWidth);
            return ((Node_.Left - tempWidth) + (Node_.Width / 2));
        }
         
     
        function ChildNodesWidth(OrgObj){//取得層寬
            var ReWidth=0;
            for(var s_=0; s_<OrgObj.Nodes.length; s_++){
                ReWidth+=OrgObj.Nodes[s_].Width;
            }
            ReWidth+=(OrgObj.Nodes.length-1) * This.IntervalWidth;
            return ReWidth;
        }
         
        function SetDepthGroupWidth(){//設(shè)置層深寬度
            for(var n_=1; n_<=This.Depth; n_++){
                var tempNodeGroups=This.DepthGroup[n_].NodeGroups;
                for(var m_=0; m_<tempNodeGroups.length; m_++){
                    tempNodeGroups[m_].Width=GetGroupWidthByNode(tempNodeGroups[m_][0]);
                }
            }
        }
         
         
        function SetDepthsHeight(){//設(shè)置層深高度
            for(var n_=1; n_<=This.Depth; n_++){
                var tempNodes_=This.DepthGroup[n_].Nodes;
                var MaxHeight=0;
                for(var m_=0; m_<tempNodes_.length; m_++){
                    if(tempNodes_[m_].Height>MaxHeight){
                        MaxHeight=tempNodes_[m_].Height;
                    }
                }
                This.DepthGroup[n_].Height=MaxHeight;
            }
        }
     
        function GetDepth(OrgObj){//取得層深,層群集
            This.Nodes[This.Nodes.length]=OrgObj;
            OrgObj.Depth=(This.Depth==0)?This.Depth+1:OrgObj.parentNode.Depth+1;
            This.Depth=(OrgObj.Depth>This.Depth)?OrgObj.Depth:This.Depth;
            if(typeof(This.DepthGroup[OrgObj.Depth])!="object"){
                This.DepthGroup[OrgObj.Depth]=[];
                This.DepthGroup[OrgObj.Depth].Nodes=[];
                This.DepthGroup[OrgObj.Depth].NodeGroups=[];
            }
            This.DepthGroup[OrgObj.Depth].Nodes[This.DepthGroup[OrgObj.Depth].Nodes.length]=OrgObj;
            if(OrgObj.Depth==1){
                This.DepthGroup[OrgObj.Depth].NodeGroups[0]=[];
                This.DepthGroup[OrgObj.Depth].NodeGroups[0][0]=OrgObj;
                OrgObj.NodeGroupId=0;
                OrgObj.NodeOrderId=0;
            }else{
                if(This.DepthGroup[OrgObj.Depth].NodeGroups.length==0){
                    This.DepthGroup[OrgObj.Depth].NodeGroups[0]=[];
                    This.DepthGroup[OrgObj.Depth].NodeGroups[0][0]=OrgObj;
                    OrgObj.NodeGroupId=0;
                    OrgObj.NodeOrderId=0;
                }else{
                    var GroupsLength=This.DepthGroup[OrgObj.Depth].NodeGroups.length;
                    var GroupNodesLength=This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength-1].length;
                    if(OrgObj.parentNode==This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength-1][GroupNodesLength-1].parentNode){
                        This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength-1][GroupNodesLength]=OrgObj;
                        OrgObj.NodeGroupId=GroupsLength-1;
                        OrgObj.NodeOrderId=GroupNodesLength;
                    }else{
                        if(typeof(This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength])!="object"){
                            This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength]=[];
                        }
                        GroupNodesLength=This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength].length;
                        This.DepthGroup[OrgObj.Depth].NodeGroups[GroupsLength][GroupNodesLength]=OrgObj;
                        OrgObj.NodeGroupId=GroupsLength;
                        OrgObj.NodeOrderId=GroupNodesLength;
                    }
                }
            }
             
            if(OrgObj.Nodes.length!=0){
                for(var n=0; n<OrgObj.Nodes.length; n++){
                    GetDepth(OrgObj.Nodes[n]);
                }
            }
        }
        function BoxInit(OrgObj_, Parent_){//節(jié)點(diǎn)初始化
            OrgObj_.Templet=GetBoxTemplet();
            OrgObj_.BoxWidth=This.BoxWidth;
            OrgObj_.BoxHeight=This.BoxHeight;
            OrgObj_.inIt(Parent_);
         
            if(OrgObj_.Nodes.length!=0){
                for(var n=0; n<OrgObj_.Nodes.length; n++){
                    BoxInit(OrgObj_.Nodes[n], Parent_);
                }
            }
        }
     
        function GetBoxTemplet(){//取得節(jié)點(diǎn)模板
            if(This.BoxTemplet!=null)return This.BoxTemplet;
            var TempletStr="<div id=\"{Id}\" style=\"font-size:12px;padding:5px 5px 5px 5px;border:thin solid blue;background-color:lightgrey; clear:left;float:left;text-align:center;position:absolute;"
            TempletStr+="\"></div>";
            return TempletStr;
        }
         
        function CreateLine(type_, top_, left_, long_, size_, color_, id_, parent_){
            this.Type=type_;
            top_=top_+"";
            left_=left_+"";
            long_=long_+"";
            this.Top=(top_.substr(top_.length-2).toLowerCase()!="px")?top_+"px":top_;
            this.Left=(left_.substr(left_.length-2).toLowerCase()!="px")?left_+"px":left_;
            this.Long=(long_.substr(long_.length-2).toLowerCase()!="px")?long_+"px":long_;
            this.Size=(size_==undefined)?"1px":size_+"";
            this.Id=(id_==undefined)?null:id_;
            this.Size=(this.Size.substr(this.Size.length-2).toLowerCase()!="px")?this.Size+"px":this.Size;
            this.Color=(color_==undefined)?"#000000":color_;
            this.Line=document.createElement("DIV");
            parent_.appendChild(this.Line);
            this.Line.innerText="x";
            this.Line.style.position="absolute";
            this.Line.style.top=this.Top;
            this.Line.style.left=this.Left;
            this.Line.style.overflow="hidden";
            if(this.Type==1){
                this.Line.style.borderTopColor=this.Color;
                this.Line.style.borderTopWidth=this.Size;
                this.Line.style.borderTopStyle="solid";
                this.Line.style.width=this.Long;
                this.Line.style.height="0px";
            }else{
                this.Line.style.borderLeftColor=this.Color;
                this.Line.style.borderLeftWidth=this.Size;
                this.Line.style.borderLeftStyle="solid";
                this.Line.style.height=this.Long;
                this.Line.style.width="0px";
            }
            if(this.Id!=null)this.Line.id=this.Id;
        }
     
    }
    function showChildNode(child){
        var b=new OrgNode();
        b.customParam.title = child.title;
        if(child.children && child.children.length){
            for(var i=0;i<child.children.length;i++){
                b.Nodes.Add(showChildNode(child.children[i]));
            }
        }
        return b;
    }
     
    function paintContactOrganization(dataArr, container){
        var a=new OrgNode();
        a.customParam.title = dataArr.title;
        if(dataArr.children && dataArr.children.length){
            for(var i=0;i<dataArr.children.length;i++){
                a.Nodes.Add(showChildNode(dataArr.children[i]));
            }
        }
        var OrgShows=new OrgShow(a);
        OrgShows.parent = container||document.body; //設(shè)置父容器
        OrgShows.Top=50;  //設(shè)置頂距離
        OrgShows.Left=50; //設(shè)置左距離
        OrgShows.IntervalWidth=20; //設(shè)置節(jié)點(diǎn)間隔寬度
        OrgShows.IntervalHeight=60; //設(shè)置節(jié)點(diǎn)間隔高度
        OrgShows.ShowType=1;  //設(shè)置節(jié)點(diǎn)展示方式  1橫向  2豎向
        OrgShows.BoxHeight=30;  //設(shè)置節(jié)點(diǎn)默認(rèn)高度
        //OrgShows.BoxWidth=100; //設(shè)置節(jié)點(diǎn)默認(rèn)寬度
        var TempletStr="<div id=\"{Id}\" style=\"font-size:13px;padding:15px 15px 15px 15px;border:15px thin outset #7f8183;border-radius:10px;background-color:#bae0e3; clear:left;float:left;text-align:center;position:absolute;"
        TempletStr+="\"><div style=\"line-height:20px;\">{title}</div></div>";
        OrgShows.BoxTemplet = TempletStr;
        OrgShows.Run();
    }
</script>
<body>
<div id="tree" style="position: relative;width: 100%;margin: 0 auto;"></div>
<script language="javascript" type="text/javascript">
    var arr = {
        id:1,
        title:"這是腦袋 ",
        children:[
            {
                id:11,
                title:"節(jié)點(diǎn)1.1",
                children:[
                    {
                        id:111,
                        title:"子節(jié)點(diǎn)1.1_1",
                        children:[
                            {
                                id:1111,
                                title:"子節(jié)點(diǎn)1.1.1_1"
                            },
                            {
                                id:1112,
                                title:"子節(jié)點(diǎn)1.1.1_2"
                            }
                        ]
                    },
                    {
                        id:112,
                        title:"子節(jié)點(diǎn)1.1_2",
                        children:[
                            {
                                id:1121,
                                title:"子節(jié)點(diǎn)1.1.2_1"
                            },
                            {
                                id:1122,
                                title:"子節(jié)點(diǎn)1.1.2_2"
                            }
                        ]
                    }
                ]
            },
            {
                id:12,
                title:"節(jié)點(diǎn)1.2",
                children:[
                    {
                        id:121,
                        title:"子節(jié)點(diǎn)1.2_1"
                    },
                    {
                        id:122,
                        title:"子節(jié)點(diǎn)1.2_2",
                        children:[
                            {
                                id:1221,
                                title:"子節(jié)點(diǎn)1.2.2_1"
                            },
                            {
                                id:1222,
                                title:"子節(jié)點(diǎn)1.2.2_2"
                            }
                        ]
                    }
                ]
            },
        ]
    }
    paintContactOrganization(arr, document.querySelector("#tree"));
</script>
</body>

</html>

一步一步縷清楚就好啦加油

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末轻姿,一起剝皮案震驚了整個(gè)濱河市线召,隨后出現(xiàn)的幾起案子怀薛,更是在濱河造成了極大的恐慌些己,老刑警劉巖锄禽,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傍药,死亡現(xiàn)場(chǎng)離奇詭異磺平,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拐辽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門拣挪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俱诸,你說我怎么就攤上這事菠劝。” “怎么了乙埃?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵闸英,是天一觀的道長(zhǎng)锯岖。 經(jīng)常有香客問我,道長(zhǎng)甫何,這世上最難降的妖魔是什么出吹? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮辙喂,結(jié)果婚禮上洞拨,老公的妹妹穿的比我還像新娘。我一直安慰自己变泄,他們只是感情好嗜诀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炬太,像睡著了一般灸蟆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亲族,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天炒考,我揣著相機(jī)與錄音,去河邊找鬼霎迫。 笑死斋枢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的知给。 我是一名探鬼主播瓤帚,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涩赢!你這毒婦竟也來了戈次?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤谒主,失蹤者是張志新(化名)和其女友劉穎朝扼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霎肯,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擎颖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了观游。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搂捧。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懂缕,靈堂內(nèi)的尸體忽然破棺而出允跑,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布聋丝,位于F島的核電站索烹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏弱睦。R本人自食惡果不足惜百姓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望况木。 院中可真熱鬧垒拢,春花似錦、人聲如沸火惊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屹耐。三九已至尸疆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惶岭,已是汗流浹背仓技。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俗他,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓阔逼,卻偏偏與公主長(zhǎng)得像兆衅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗜浮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容