二分木二分木の最小深さ

透かし、type_ZmFuZ3poZW5naGVpdGk、shadow_10、text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tldmluX25hbg ==、size_16、color_FFFFFF、t_70

https://www.bilibili.com/video/av46402848/

最初の問題解決のアプローチ

/ ** 
 *バイナリツリーノード定義のA。
 *パブリッククラスツリーノード{ 
 * INTヴァル; 
 *ツリーノードは、左; 
 *ツリーノードが正しい; 
 *ツリーノード(INT X){X =ヴァル;} 
 *} 
 * / 
クラスのソリューション{ 
    公共のint minDepthを(ツリーノードルート){ 
        IF(ルート== NULL)
	    戻り0; 
	IF(root.left == NULL)
		を返すminDepth(root.right)+ +1; //!キーの左部分木は右のサブツリーを参照nullである
	IF(root.right == null)の
		minDepth(root.left)+1を返す; //します!キーの右サブツリーサブツリーNULLのまま参照される
	 int型左= minDepth(root.left)+1; 
	 int型の右= minDepth(root.right)+1; 
	 Math.minを(左、右)を返す; //!キー
    } 
}

レベルを達成するために第2のリンクリストトラバーサル 

クラスソリューション{ 
	公共のint minDepth(ツリーノードのルート){ 
		int型RES = 0。
		(ルート== null)の場合は
			リターンのres; 
		LinkedListは<のTreeNode> LL =新しいLinkedListは<のTreeNode>(); 
		ll.add(ルート)。
		(!ll.isEmpty())中{ 
			int型のサイズ= ll.size(); 
			解像度++; //要用两个一方的原因主要是增加层作用
			しながら(サイズ> 0){ 
				ツリーノードTEMP = ll.poll()。
				(temp.left == nullの&& temp.right == null)の場合は
					リターンのres; 
				(!temp.right = null)の場合
					ll.add(temp.right)。
				(!temp.left = null)の場合
					ll.add(temp.left)。
				サイズ - ; 
			} 
		} 
		RESを返します。
	} 
}


おすすめ

転載: blog.51cto.com/14429166/2416564