<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 圖的遍歷 ![](https://img.kancloud.cn/0f/fa/0ffa4051ec3c22697d1df9713fac37be_884x782.png) ### 深度優先遍歷dfs 1. 利用棧實現 2. 從初始頂點開始把節點按深度放入棧,然后彈出 3. 每彈出一個頂點,把該頂點的下一個沒有進過棧的鄰接點放入棧 4. 直到棧變空 ~~~ /** * 圖的dfs遍歷,深度優先遍歷 * 用棧實現 * @param vertex 初始頂點 * @return */ public Set<Vertex> dfs(Vertex vertex){ Set<Vertex> result = new LinkedHashSet<>(); Stack<Vertex> stack = new Stack<>(); Set<Vertex> pass = new HashSet<>(); // 將初始頂點加入到棧和路過的集合pass里 stack.add(vertex); pass.add(vertex); result.add(vertex); // 處理棧 while (!stack.isEmpty()){ Vertex cur = stack.pop(); // 處理相鄰的頂點 for(Vertex next : cur.nexts){ // 不在pass里的 if(!pass.contains(next)){ // 記錄到pass里 pass.add(next); // 先將原來節點壓入到棧里 stack.add(cur); stack.add(next); // 找到一個就退出 result.add(next); break; } } } return result; } ~~~ ``` dfs:1->2->4->3->5-> ``` ### 寬度優先遍歷bfs 1. 利用隊列實現 2. 從初始頂點開始依次按照寬度進隊列,然后彈出 3. 每彈出一個頂點,把該頂點所有沒有進過隊列的鄰接頂點放入隊列 4. 直到隊列變空 ~~~ /** * 圖的寬度優先遍歷,bfs,用隊列 * @param vertex 初始頂點 * @return */ public Set<Vertex> bfs(Vertex vertex){ Set<Vertex> result = new LinkedHashSet<>(); Queue<Vertex> queue = new LinkedList<>(); Set<Vertex> pass = new HashSet<>(); queue.offer(vertex); pass.add(vertex); // 處理隊列 while (!queue.isEmpty()){ Vertex cur = queue.poll(); result.add(cur); // 處理相鄰節點 for(Vertex next : cur.nexts){ if(!pass.contains(next)){ queue.offer(next); pass.add(next); } } } return result; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看