激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 深度優先搜索 and 廣度優先搜索的算法原理和代碼展示

Java 深度優先搜索 and 廣度優先搜索的算法原理和代碼展示

2023-10-16 07:02未知服務器之家 Java教程

111. 二叉樹的最小深度 題目:給定一個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。 說明: 葉子節點是指沒有子節點的節點。 方法1:深度優先搜索 原理:深度優先搜索(Depth First S

111. 二叉樹的最小深度

題目:給定一個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明:葉子節點是指沒有子節點的節點。

方法1:深度優先搜索

原理:深度優先搜索(Depth First Search)是一種遍歷圖的算法,它從圖中的某個頂點出發,沿著一條路徑不斷向下探索,直到無法繼續深入為止,然后回溯到上一個頂點,繼續探索其他路徑,直到所有頂點都被訪問過為止,?所有的頂點都被壓入中。棧:先進后出。

思路:使用深度優先搜索,遍歷整棵樹,記錄最小的深度。對于每一個非葉子節點,分別計算其左右葉子結點的最小葉子結點深度。通過遞歸的方式解決該問題。但遞歸在運行時,值的變化很難把握。

   public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        if (root.left == null && root.right == null) {
            return 1;
        }
        // 最小深度
        int min_depth = Integer.MAX_VALUE;
        // 左子樹節點
        if(root.left != null){
            min_depth = Math.min(minDepth(root.left), min_depth);
        } 
        // 右子樹節點
        if(root.right != null){
            min_depth = Math.min(minDepth(root.right), min_depth);
        } 
        return min_depth + 1;
}

時間復雜度為O(N),因為二叉樹中,每一個子節點都被訪問過。平均空間復雜度O(logN)。  

方法2:廣度優先搜索

原理:廣度優先搜索(Breadth First Search)是一種遍歷圖的算法,它從圖中的某個頂點出發,沿著一條路徑不斷向下探索,直到無法繼續深入為止,然后回溯到上一個頂點,繼續探索其他路徑,直到所有頂點都被訪問過為止,?所有的頂點都被壓入隊列中。隊列:先進先出。

思路:使用廣度優先搜索,當我們找到一個葉子節點時,直接返回這個葉子節點的深度。廣度優先搜索的性質保證了最先搜索到的葉子節點的深度一定最小。

class QueueNode{
        // 定義屬性
        TreeNode node;
        int depth;
        // 構造函數
        public QueueNode(TreeNode node,int depth){
            this.node = node;
            this.depth = depth;
        }
    }
    public int minDepth(TreeNode root) {
        if(root == null){
            return 0;
        }
        Queue<QueueNode> queue1 = new LinkedList<QueueNode>();
        queue1.offer(new QueueNode(root,1));// 先將第一個根節點放入隊列中
        while(!queue1.isEmpty()){
            // 彈出首個元素
            QueueNode nodedepth = queue1.poll();
            TreeNode node = nodedepth.node;
            int depth = nodedepth.depth;
            if (node.left == null && node.right == null) {
                // 最終的出口一定在這里
                return depth;
            }
            // 左子樹節點
            if(node.left != null){
                // 將節點放入隊列中 depth = depth + 1
                queue1.offer(new QueueNode(node.left,depth + 1));
            } 
            // 右子樹節點
            if(node.right != null){
                // 將節點放入隊列中 depth = depth + 1
                queue1.offer(new QueueNode(node.right,depth + 1));
            } 
        }
        return 0;
    }

?時間復雜度為O(N),因為二叉樹中,每一個子節點都被訪問過。平均空間復雜度O(N)?!?/span>

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久精品av | 精品一区二区免费 | 成年人国产视频 | 亚洲成a人在线 | 黄色一级片免费观看 | 精品一区二区三区免费毛片 | 久久综合一区二区 | 欧美爱爱视频免费看 | 久久99国产视频 | av免费在线网 | 末成年女av片一区二区 | 男女羞羞视频在线免费观看 | 国产99久久久国产精品下药 | 欧洲亚洲激情 | 国产女厕一区二区三区在线视 | 日本xxxx色视频在线观看免费, | 性欧美videos另类极品 | 99ri在线观看| 亚洲欧美国产精品va在线观看 | 日本精品久久久久久草草 | 一区二区久久久久草草 | 欧美a在线看 | 日韩一级网站 | 亚洲特黄a级毛片在线播放 久久久入口 | 国产精品片一区二区三区 | 一级观看免费完整版视频 | 依依成人综合 | 国产精品视频一区二区三区四区五区 | 毛片a片免费看 | 久国久产久精永久网页 | 在线成人免费观看视频 | 欧洲精品视频在线观看 | 18视频网站在线观看 | 午夜伦情电午夜伦情电影 | 国产精品免费一区二区三区在线观看 | 欧美视屏一区二区 | 久久久久久久亚洲精品 | 免费国产成人高清在线看软件 | 精品国产一区二区三区四区在线 | 九九热九九爱 | 成人在线视频免费观看 |