精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

刷了360多道算法題,我終于頓悟了它的真諦

開發(fā) 后端
希望用我自己瘋狂刷題的勁頭,感染大家,讓大家愛上刷題,順利通過華為OD機試,掌握更多優(yōu)秀的算法。下面這道題,是很經(jīng)典的深度優(yōu)先搜索dfs算法 + 二叉樹。掌握一道題,精通一類題,沖吧~

大家好,我是哪吒。

最近一直在刷算法題,刷華為OD算法題,有諸多好處:

  • 比如可以考華為OD崗位,大廠算法崗,待遇直接拉滿,走向人生巔峰。
  • 不考也沒關(guān)系,就當練習算法題了,哪吒半年時間刷了360多道題,平均一天六道題,一道題40分鐘,一天刷4個小時?現(xiàn)在一看到算法題,真的有一種靈光乍現(xiàn)的感覺。

希望用我自己瘋狂刷題的勁頭,感染大家,讓大家愛上刷題,順利通過華為OD機試,掌握更多優(yōu)秀的算法。

下面這道題,是很經(jīng)典的深度優(yōu)先搜索dfs算法 + 二叉樹。掌握一道題,精通一類題,沖吧~

一、題目描述

某文件系統(tǒng)中有N個目錄,每個目錄都有一個獨一無二的ID。每個目錄只有一個父目錄,但每個父目錄下可以有零個或者多個子目錄,目錄結(jié)構(gòu)呈樹狀結(jié)構(gòu)。

假設(shè),根目錄的ID為0,且根目錄沒有父目錄,其他所有目錄的ID用唯一的正整數(shù)表示,并統(tǒng)一編號。

現(xiàn)給定目錄ID和其父目錄ID的對應(yīng)父子關(guān)系表[子目錄ID,父目錄ID],以及一個待刪除的目錄ID,請計算并返回一個ID序列,表示因為刪除指定目錄后剩下的所有目錄,返回的ID序列以遞增序輸出。

注意:

  • 被刪除的目錄或文件編號一定在輸入的ID序列中。
  • 當一個目錄刪除時,它所有的子目錄都會被刪除。

說人話就是:

輸入m行數(shù)據(jù),第一個元素是子節(jié)點值,第二個是父節(jié)點值,m行數(shù)據(jù)可以組成一個二叉樹。

最后輸入要刪除的節(jié)點,求二叉樹剩下的節(jié)點值。

例如輸入:

8 6 

10 8 

6 0 

20 8 

2 6 

8

二叉樹就會變?yōu)椋?/p>

  6

2   8

  10  20

刪除最后的8,輸出6 2就是結(jié)果。

很簡單吧,少年~

二、輸入描述

輸入的第一行為父子關(guān)系表的長度m;

接下來的m行為m個父子關(guān)系對;

最后一行為待刪除的ID。序列中的元素以空格分割。

三、輸出描述

輸出一個序列,表示因為刪除指定目錄后,剩余的目錄ID。

四、深度優(yōu)先搜索dfs

1、搜索的要點:

  • 初始狀態(tài)。
  • 重復(fù)產(chǎn)生新狀態(tài)。
  • 檢查新狀態(tài)是否為目標,是結(jié)束,否轉(zhuǎn)(2)。

如果搜索是以接近起始狀態(tài)的程序依次擴展狀態(tài)的,叫寬度優(yōu)先搜索。

2、如果擴展是首先擴展新產(chǎn)生的狀態(tài),則叫深度優(yōu)先搜索。

深度優(yōu)先搜索用一個數(shù)組存放產(chǎn)生的所有狀態(tài)。

  • 把初始狀態(tài)放入數(shù)組中,設(shè)為當前狀態(tài)。
  • 擴展當前的狀態(tài),產(chǎn)生一個新的狀態(tài)放入數(shù)組中,同時把新產(chǎn)生的狀態(tài)設(shè)為當前狀態(tài)。
  • 判斷當前狀態(tài)是否和前面的重復(fù),如果重復(fù)則回到上一個狀態(tài),產(chǎn)生它的另一狀態(tài)。
  • 判斷當前狀態(tài)是否為目標狀態(tài),如果是目標,則找到一個解答,結(jié)束算法。
  • 如果數(shù)組為空,說明無解。

3、深度優(yōu)先搜索dfs代碼架構(gòu):

public int def(int x, int y ,int step){
    if(遞歸出口/達到目標狀態(tài)){
        //進行對應(yīng)操作
        return 0;
    }
    for (int i = 0; i < n; i++) {
        //遍歷剩下的所有的情況
        if(visit[i]==0){
            //未訪問
            x = 下一步更新;
            y = 下一步更新;
            visit[i] = 1;
            def(x,y,step);
            visit[i] = 0;  //記得回溯還原
        }
    }
}

五、解題思路

根據(jù)題目描述,輸入數(shù)據(jù)可以組成一個二叉樹,如果將某個節(jié)點刪除,求剩余節(jié)點。

輸入父子關(guān)系表的長度m。

接下來的m行輸入父子關(guān)系。

輸入待刪除的ID。

遍歷m個父子關(guān)系,拼接成二叉樹,拼接剩余的目錄ID。

  • 如果該關(guān)系的父節(jié)點是value。
  • 如果該父節(jié)點不是待移除的ID。
  • 拼接成二叉樹。
  • 拼接剩余的目錄ID -- builder。
  • 移除滿足條件的父子關(guān)系。
  • 父子關(guān)系集合treeList移除某節(jié)點,treeList長度-1,下一個坐標i也應(yīng)該-1。
  • 如果剩余的父子關(guān)系集合treeList為0,則不需要再進行dfs,如果要dfs的node節(jié)點是null,則不需要再尋找其左右子節(jié)點;
  • 遍歷treeList,拼接二叉樹。

在剩余的父子關(guān)系集合treeList中尋找父節(jié)點是node.left的節(jié)點,進行樹的再次拼接。

在剩余的父子關(guān)系集合treeList中尋找父節(jié)點是node.right的節(jié)點,進行樹的再次拼接。

輸出符合條件的目錄ID。

六、Java算法源碼

public class OdTest04 {
    static Node rootNode = null;
    static int removeValue = 0;
    // 剩余的目錄ID
    static StringBuilder builder = new StringBuilder();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 父子關(guān)系表的長度m
        int m = Integer.valueOf(sc.nextLine());

        // m個父子關(guān)系
        List<int[]> treeList = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            int[] treeArr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
            if(treeArr[1] == 0){
                rootNode = new Node(treeArr[0]);
                // 拼接二叉樹根ID
                builder.append(treeArr[0]).append(" ");
                continue;
            }
            treeList.add(treeArr);
        }

        // 待刪除的ID
        removeValue = Integer.valueOf(sc.nextLine());

        /**
         * 遍歷m個父子關(guān)系,拼接成二叉樹,拼接剩余的目錄ID
         */
        dfs(treeList,rootNode);
        builder.deleteCharAt(builder.length() - 1);
        // 輸出符合條件的目錄ID
        System.out.println(builder);
    }

    /**
     * 深度優(yōu)先搜索dfs
     * @param treeList
     * @param node
     */
    private static void dfs(List<int[]> treeList, Node node){
        /**
         * 如果剩余的父子關(guān)系集合treeList為0,則不需要再進行dfs
         * 如果要dfs的node節(jié)點是null,則不需要再尋找其左右子節(jié)點
         */
        if(treeList.size() == 0 || node == null){
            return;
        }
        for (int i = 0; i < treeList.size(); i++) {
            // 父子關(guān)系
            int[] treeArr = treeList.get(i);
            // 如果該關(guān)系的父節(jié)點是value
            if(treeArr[1] == node.value){
                // 如果該父節(jié)點不是待移除的ID
                if(removeValue != node.value) {
                    int sonValue = treeArr[0];
                    // 如果該子節(jié)點不是待移除的ID
                    if(removeValue != sonValue){
                        // 拼接成二叉樹
                        if(node.left == null){
                            node.left = new Node(sonValue);
                        }else if(node.right == null){
                            node.right = new Node(sonValue);
                        }
                        // 拼接剩余的目錄ID
                        builder.append(sonValue).append(" ");
                    }
                }
                // 移除滿足條件的父子關(guān)系
                treeList.remove(treeArr);
                // 父子關(guān)系集合treeList移除某節(jié)點,treeList長度-1,下一個坐標i也應(yīng)該-1
                i--;
            }
        }

        // 在剩余的父子關(guān)系集合treeList中尋找父節(jié)點是node.left的節(jié)點,進行樹的再次拼接
        dfs(treeList,node.left);
        // 在剩余的父子關(guān)系集合treeList中尋找父節(jié)點是node.right的節(jié)點,進行樹的再次拼接
        dfs(treeList,node.right);
    }
}

七、效果展示

1、輸入

6 0 

4 6 

5 4 

7 4 

8 6 

9 8 

10 8 

11 10 

8

2、輸出

6 4 5 7

3、說明

輸入可以組成二叉樹:

6
 4   8
5 7 9  10
   11

刪除值為8的節(jié)點,變?yōu)? 4 5 7。

4、也許很多人會問,如果節(jié)點的值相等,怎么辦?

6 0 

4 6 

5 4 

5 4 

5 6 

5 5 

10 5 

11 10 

5

5、輸出

6 4

6、說明

輸入可以組成二叉樹:

6
 4   5
5 5 5  10
   11

刪掉值為5的節(jié)點,變?yōu)? 4。

責任編輯:姜華 來源: 哪吒編程
相關(guān)推薦

2020-08-06 16:55:37

虛擬化底層計算機

2022-07-11 13:58:14

數(shù)據(jù)庫業(yè)務(wù)流程系統(tǒng)

2023-01-16 14:49:00

MongoDB數(shù)據(jù)庫

2019-12-06 11:22:00

中國電信

2022-09-07 09:09:13

高并發(fā)架構(gòu)

2020-11-16 08:37:16

MariaDB性能優(yōu)化

2018-12-26 09:03:30

物聯(lián)網(wǎng)IOT智能

2025-11-07 00:00:00

2020-02-29 14:37:44

國產(chǎn)內(nèi)存內(nèi)存條DDR4

2019-09-04 10:00:07

手機人臉識別

2023-10-31 08:01:48

Mybatis參數(shù)jdbcurl?

2013-07-16 14:14:08

百度移動互聯(lián)網(wǎng)91

2015-11-03 11:13:01

技術(shù)轉(zhuǎn)型心得

2021-04-12 10:32:58

人臉識別人工智能數(shù)據(jù)

2024-07-08 00:00:07

2023-10-31 07:40:15

EslintJSHint

2018-06-26 14:42:10

StringJava數(shù)據(jù)

2016-02-18 10:05:44

360數(shù)字公司創(chuàng)業(yè)

2020-12-21 07:53:38

財務(wù)研發(fā)考勤

2021-09-15 09:31:39

前端開發(fā)工具
點贊
收藏

51CTO技術(shù)棧公眾號

五月天开心婷婷| 亚欧精品在线| 国产无码精品一区二区| 国产精品视屏| 欧美性精品220| 日本高清一区| 国产成人精品免费看视频| 亚洲人成免费| 色视频www在线播放国产成人| www.51色.com| 超级碰碰久久| 一区二区视频在线看| 精品国产乱码久久久久| 亚洲无码精品在线播放| 狠狠88综合久久久久综合网| 亚洲欧美一区二区三区在线| 在线视频日韩欧美| 成人爱爱网址| 亚洲精品免费一二三区| 日本高清久久一区二区三区| www国产一区| 久久久久国产精品一区三寸| 久久99热这里只有精品国产| 性猛交娇小69hd| 麻豆一区二区| 日韩三区在线观看| 久久久精品麻豆| 欧亚av在线| 亚洲精品视频一区二区| 亚洲电影免费| 欧美拍拍视频| 成人黄色av电影| 亚洲xxx视频| 一级欧美一级日韩| 日韩精品欧美精品| 国产91精品久久久| 日韩免费黄色片| 综合精品一区| 久久精品最新地址| 五月婷婷欧美激情| 你懂的一区二区三区| 精品福利av导航| 制服下的诱惑暮生| 日本一区二区三区中文字幕| 91精品办公室少妇高潮对白| 欧美三级在线观看视频| jizz一区二区三区| 亚洲黄色免费电影| 成年人三级视频| 日本在线免费中文字幕| 国产精品乱码人人做人人爱| 欧美一区二区三区电影在线观看| 图片区 小说区 区 亚洲五月| 国产凹凸在线观看一区二区| 3d蒂法精品啪啪一区二区免费| 中文字幕一区二区人妻痴汉电车| 日韩精品一级二级| 国产精品6699| 中文字幕免费在线看| 日韩精品久久久久久| 国产精品久久久久久久久久ktv| 99久热在线精品996热是什么| 国产欧美日本| 奇米一区二区三区四区久久| 免费看日批视频| 久久这里有精品15一区二区三区| 国产成人精品在线观看| 免费av中文字幕| 美女性感视频久久| 91在线视频精品| 丰满人妻一区二区| 91在线免费视频观看| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 亚洲二区视频在线| 奇米精品一区二区三区| 国产综合色区在线观看| 欧美亚洲国产一区二区三区va| wwww.国产| 国产精区一区二区| 亚洲第一精品夜夜躁人人躁| 91精品小视频| 日韩欧美网站| 欧美福利小视频| 亚洲 欧美 成人| 免费精品99久久国产综合精品| 国产主播在线一区| 国产sm主人调教女m视频| caoporn国产精品| 色综合电影网| 亚洲精品一线| 色域天天综合网| 夜夜夜夜夜夜操| 成人福利免费在线观看| 一区二区av在线| 91 在线视频| 伊人成人在线| 国产精品自产拍在线观看中文| 国产黄色一级大片| a亚洲天堂av| 在线码字幕一区| 美女露胸视频在线观看| 欧美日韩在线免费视频| 免费观看一区二区三区| 国产精品一区高清| 欧美成人精品三级在线观看| 中文字幕在线欧美| 国产麻豆精品在线观看| 日韩成人av网站| 黄色小说在线播放| 精品视频在线看| 中文字幕在线观看网址| 91高清一区| 国产精品久久中文| 色婷婷av一区二区三区之e本道| 国产精品久久久久婷婷| 免费国产黄色网址| 视频成人永久免费视频| 中文字幕日韩高清| 五月天婷婷激情| 成人综合在线网站| 中文有码久久| 亚洲天堂一区二区| 日韩精品视频在线观看免费| 五月综合色婷婷| 日本美女一区二区三区视频| 国产一区二区不卡视频| 亚洲电影视频在线| 欧美日韩亚洲丝袜制服| 在线观看福利片| 99av国产精品欲麻豆| av色综合网| 国产网站在线免费观看| 欧美日韩黄视频| 亚洲精品国产精品国自产网站| 中文精品在线| 国产伦精品一区二区三区高清| dy888亚洲精品一区二区三区| 欧美亚洲综合在线| 无码人妻aⅴ一区二区三区69岛| 日韩视频在线一区二区三区| 国产精品区一区二区三在线播放| 91高清在线观看视频| 777a∨成人精品桃花网| 色撸撸在线视频| 蜜臀av一区二区| 亚洲欧美精品| 日日夜夜精品| 久久久999国产| 国内老熟妇对白xxxxhd| 亚洲欧美激情一区二区| 在线观看中文av| 欧美在线网址| 粉嫩av免费一区二区三区| 亚洲国产精品精华素| 欧美大黄免费观看| 久久精品国产亚洲av高清色欲 | 中文字幕人妻一区| 国产精品va| 国产欧美日韩在线播放| av在线资源| 亚洲精品视频在线播放| 天天干天天色综合| 国产精品热久久久久夜色精品三区| 91看片在线免费观看| 日韩精品网站| 亚洲综合精品伊人久久| 啪啪免费视频一区| 亚洲国产精品推荐| 男人天堂视频网| 国产精品久久久久四虎| 中文字幕 欧美 日韩| 今天的高清视频免费播放成人| 国内一区二区三区在线视频| 欧美大胆性生话| 久久久91精品| 性插视频在线观看| 欧美三区在线视频| 欧美xxxx黑人xyx性爽| 91在线精品一区二区| 青青草av网站| 综合激情婷婷| 欧美日韩综合另类| 国模大尺度视频一区二区| 久久久久国产视频| 国产福利片在线| 日韩亚洲欧美在线| 黄色片视频免费| 亚洲天堂av老司机| 国产 中文 字幕 日韩 在线| 日韩不卡免费视频| 国产精品啪啪啪视频| 日韩极品少妇| 成人写真福利网| 僵尸再翻生在线观看免费国语| 中文字幕久热精品视频在线| www.好吊色| 色欧美乱欧美15图片| 五月天激情丁香| 久久丝袜美腿综合| 亚洲国产午夜精品| 久久久精品日韩| 99国产精品白浆在线观看免费| 国产欧美日韩免费观看| 91九色蝌蚪成人| 成人在线黄色| 久久免费在线观看| 国产丝袜在线| 有码中文亚洲精品| 神马久久久久久久久久| 欧美疯狂做受xxxx富婆| 精品人妻一区二区三区免费看 | 亚洲人av在线影院| 亚洲av无码片一区二区三区| 欧美亚男人的天堂| 国产成人精品片| 亚洲精品一卡二卡| 成人欧美一区二区三区黑人一| 99久久99精品久久久久久 | 99精品欧美一区| 人人爽久久涩噜噜噜网站| 欧美色图色综合| 国产精品久久久久久麻豆一区软件| 国产亚洲精品久久飘花| 九九九九九九精品任你躁| 国产精品久久久久久久久久新婚| 九色porny丨首页入口在线| 久久影院中文字幕| 日本免费在线观看| 国产亚洲欧洲高清| 国产资源在线看| 亚洲美女喷白浆| 天堂中文字幕在线| 亚洲福利视频在线| 亚洲精品成av人片天堂无码 | 欧美一级二级三级视频| 亚洲在线免费观看| 999精品视频在线观看| 国产精品久久不能| 校园春色亚洲色图| 日本国产精品视频| 超级碰碰久久| 国产精品福利在线观看| 美女福利一区二区| 国产成人福利网站| 免费高清视频在线一区| 国产精品高潮粉嫩av| 欧美黑人巨大xxxxx| 国产91在线视频| 色老太综合网| 国产精品影院在线观看| 久久久久毛片| 91精品久久久久久久久久久久久| 黄色精品视频网站| 国产日韩在线视频| 国产精品麻豆| 99re视频| 另类尿喷潮videofree| 久久久久久国产精品一区| 思热99re视热频这里只精品 | 特级特黄刘亦菲aaa级| 东方aⅴ免费观看久久av| 日本一区二区免费视频| 99麻豆久久久国产精品免费| 国产中文字幕一区二区| 久久久久久一二三区| 99久久99久久精品免费看小说.| 国产精品毛片大码女人| 丝袜美腿小色网| 亚洲国产精品一区二区久久 | 欧美性猛片xxxx免费看久爱| 中文字幕乱码人妻二区三区| 51精品国自产在线| 狠狠躁日日躁夜夜躁av| 亚洲欧美中文日韩在线v日本| 高清国产福利在线观看| 按摩亚洲人久久| heyzo在线欧美播放| 国产精品91久久| 91精品网站在线观看| 国产伦精品一区二区三区高清| 日本一道高清一区二区三区| 视频二区一区| 黄色成人精品网站| 国产天堂在线播放| 国产乱色国产精品免费视频| 免费a在线观看播放| 日本一区二区三级电影在线观看| 国产一二三四区| 色综合天天天天做夜夜夜夜做| 亚洲在线精品视频| 精品国产露脸精彩对白| av网站在线播放| 午夜精品久久久久久久99热浪潮| 春暖花开亚洲一区二区三区| 99电影网电视剧在线观看| 国产aⅴ精品一区二区三区久久| 中文字幕中文字幕一区三区| av成人黄色| www.成人黄色| 久久精品一区二区三区不卡牛牛| 日韩成人毛片视频| 色狠狠综合天天综合综合| 精品国产伦一区二区三| 亚洲欧美三级在线| 国产色婷婷在线| 国产精品永久免费视频| 欧美一级色片| 400部精品国偷自产在线观看| 天堂在线一区二区| 亚洲精品国产成人av在线| 国产精品久久久久aaaa| 综合网在线观看| 亚洲成人精品久久久| 国产高清一区二区三区视频| 国产成人综合亚洲| 欧美黑白配在线| 性一交一乱一伧国产女士spa| 久久精品国产精品亚洲红杏| 黄色工厂在线观看| 亚洲国产一区二区在线播放| 国产精品怡红院| 中日韩美女免费视频网站在线观看| 98色花堂精品视频在线观看| 91久久精品国产91久久性色tv| 日韩理论片av| caoporn超碰97| 久久久久久免费网| 欧美 日韩 精品| 亚洲精品电影网站| 日韩影视在线| 999国内精品视频在线| 国产精品成人a在线观看| 午夜免费高清视频| 久久精品这里都是精品| 成人a v视频| 亚洲另类xxxx| 欧美电影网址| 视频一区二区在线观看| 日韩精品免费专区| 99在线视频免费| 在线精品视频免费播放| 国产精品ⅴa有声小说| 日韩免费在线观看视频| 亚洲最好看的视频| 欧美韩国日本在线| 久久日韩粉嫩一区二区三区| √资源天堂中文在线| 亚洲精品在线视频| 欧美最新精品| 亚洲一区二区三区午夜| 久久精品噜噜噜成人av农村| 激情高潮到大叫狂喷水| 7799精品视频| 在线heyzo| 国产日本一区二区三区| 亚洲欧洲午夜| 国产一二三四五区| 91久久人澡人人添人人爽欧美| 欧美在线一卡| 国产精品一二三视频| 91精品啪在线观看国产18| 三级黄色片免费观看| 亚洲午夜久久久| 五月天久久久久久| 国产成人综合一区二区三区| 日韩成人影院| 国产亚洲色婷婷久久| 亚洲一区二区三区四区在线| 天天操天天干天天舔| 日本人成精品视频在线| 日本欧美国产| 一级黄色大片免费看| 精品久久久久久久久久久久久 | 欧美黑人经典片免费观看| 99re热这里只有精品视频| 性高潮视频在线观看| 久久综合久久八八| 欧美理伦片在线播放| 亚洲激情在线观看视频| 亚洲精品中文字幕在线观看| 亚州精品国产精品乱码不99按摩| 国产91色在线免费| 欧美va天堂| 日韩人妻一区二区三区| 欧美一区二区三区免费观看视频 | 国产精品专区一| 亚洲小说欧美另类婷婷| 久久久久久久久久久久久久久| 欧美日韩高清一区二区| 美女网站视频在线| 日本高清一区| 不卡av在线网| 一本色道久久综合熟妇| 91精品国产高清自在线| 久久精品国产99久久| 美女又黄又免费的视频| 在线视频观看一区| 黄色成人在线网| 一级做a爰片久久| 91免费国产在线|