深度优先遍历

图的遍历,可以从图中的任何一个节点出发,将图的各个节点都经过一次,且只有一次。

eg1:

在这里插入图片描述
深度优先遍历选择一个节点的相邻节点,直至最末的节点没有相邻的节点,就返回上一层,在遍历上一个节点的另一个相邻节点,以此方式直至遍历结束。

深度优先遍历的图解顺序:
在这里插入图片描述

eg2:

在这里插入图片描述
深度优先遍历的图解顺序:
在这里插入图片描述
上代码:

class tu{
    constructor(){
        this.point_array = new Array();
        this.point_arc = new Array();
    }

    create(){
        //图的顶点元素
        this.point_array = ['A', 'B', 'C', 'E', 'D', 'G', 'F'];
        //邻接矩阵
        this.point_arc = [[0,1,1,1,0,0,0],
                          [1,0,0,0,0,0,0],
                          [1,0,0,0,0,0,0],
                          [1,0,0,0,1,0,1],
                          [0,0,0,1,0,0,0],
                          [0,0,0,0,0,0,1],
                          [0,0,0,1,0,1,0]]
    }
    show(){
        console.log(this.point_array);
        console.log(this.point_arc);
    };

    dfs(){
        let visited = new Array();
        for(let i = 0; i < this.point_array.length; i++){
            visited[i] = false;
        }
        this.iterator(visited,0)
    }

    iterator(visit,n){
        if(!visit[n]){
            console.log(n+':'+this.point_array[n])
            visit[n] = true;
            for(let j = 0; j < this.point_array.length; j++){
                if(!visit[j] && this.point_arc[n][j]===1){
                        this.iterator(visit,j);    
                }
            }
        }
    }

};


let pic = new tu();
pic.create();
pic.dfs();
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值