日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Leetcode:给一颗二叉树,找这颗二叉树最小的深度。

發布時間:2025/3/21 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode:给一颗二叉树,找这颗二叉树最小的深度。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給一顆二叉樹,找這顆二叉樹最小的深度。最小深度是從根節點到最近的葉節點的最短路徑上的節點數。

思路://采用廣度優先搜索,或者層序遍歷,找到的第一個葉節點的深度即是最淺。

一定記得維護一個last指針,來指向每一行的最后一個元素!!


C++?版本

class Solution { public:typedef TreeNode* tree;int run(TreeNode *root) {if(!root) return 0;queue<tree> q;tree now,last;int level,size;last = now = root;level = 1;q.push(root);while(q.size()){now = q.front();q.pop();size = q.size();if(now->left) q.push(now->left);if(now->right) q.push(now->right);//如果走到了每一行的最右邊,則將last更新為當前最右節點,也即是last表示每行的行尾;//每次push新的節點之后,都要判斷一下當前隊列的元素數量是否更新;//如果沒有更新且當前隊列為空,則跳出循環;if(q.size()-size == 0) break;if(last == now){level++;if(q.size()) last = q.back();}}return level;} };

Java版本

來個非遞歸的,思路是層序遍歷,找到第一個左右結點都為null的情況,就返回.

/*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ import java.util.LinkedList; import java.util.Queue; /*給定一個二叉樹,求其最小深度。最小深度是從根節點到最近的葉節點的最短路徑上的節點數。 */ public class Solution {public int run(TreeNode root) {if(root == null) return 0;if(root.left == null && root.right == null) return 1;int depth = 0;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while(!queue.isEmpty()){int len = queue.size();depth++;for(int i = 0;i<len;i++){//poll()返回并刪除隊頭元素TreeNode cur = queue.poll();if(cur.left == null && cur.right == null) return depth;if(cur.left != null) queue.offer(cur.left);if(cur.right != null) queue.offer(cur.right);}}return 0;}}

?

總結

以上是生活随笔為你收集整理的Leetcode:给一颗二叉树,找这颗二叉树最小的深度。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。