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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

《剑指offer》求二叉树的最小深度(非递归法)

發(fā)布時(shí)間:2024/1/23 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《剑指offer》求二叉树的最小深度(非递归法) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目:求二叉樹(shù)的最小深度(實(shí)際上該題來(lái)自leetcode)

解析:遞歸法簡(jiǎn)單些,下面演示下非遞歸。無(wú)外乎層次遍歷二叉樹(shù)了,思想是用current記錄當(dāng)前層的節(jié)點(diǎn)數(shù),next記錄下一層的節(jié)點(diǎn)數(shù),用隊(duì)列保存層次遍歷的節(jié)點(diǎn),每次出隊(duì)就current–,當(dāng)current=0時(shí)候就說(shuō)明該層遍歷完了,height++,然后把當(dāng)前的current=next,next=0;前方注意了,退出條件是什么呢?仔細(xì)想想,退出條件就是出隊(duì)節(jié)點(diǎn)的left以及right節(jié)點(diǎn)均為null,當(dāng)然更加需要注意的是,當(dāng)前層就break了,需要height++

/*** 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.Map; import java.util.Queue; public class Solution {public int run(TreeNode root) {if(root==null){//空節(jié)點(diǎn)return 0;}if(root.left==null&&root.right==null){//只有一個(gè)節(jié)點(diǎn)return 1;}int height =0;Queue<TreeNode> queue = new LinkedList<>();if(root!=null){queue.add(root);}int current=1;//隊(duì)列里只有一個(gè)節(jié)點(diǎn)int next=0;while (!queue.isEmpty()){TreeNode node =queue.poll();current--;//上一層的節(jié)點(diǎn)數(shù)減1if(node.left==null&&node.right==null){//退出條件height++;break;}if(node.left!=null){queue.add(node.left);next++;}if(node.right!=null){queue.add(node.right);next++;}if(current==0){//上一層節(jié)點(diǎn)遍歷完了height++;current=next; next=0;}}return height;} }

總結(jié)

以上是生活随笔為你收集整理的《剑指offer》求二叉树的最小深度(非递归法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。