日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/21 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:给一颗二叉树,找这颗二叉树最小的深度。的全部內容,希望文章能夠幫你解決所遇到的問題。

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