いくつかの一般的な問題と古典アルゴリズムを実装

TOPKアルゴリズム:

https://www.cnblogs.com/lxy-xf/p/11338652.html

バイナリツリーの直径:

leetcode543:

バイナリツリーを考えると、あなたはその直径の長さを計算する必要があります。バイナリツリーは、経路長の任意の2つのノードの直径の最大長さです。このパスはルートを通過してもよいです。

アイデア:

  単純なバイナリツリートラバーサルは、左と右の子がツリーのノードの数に応じて現在のツリーの最大長さを計算するノード、グローバル最大の長さを更新します。コア返却は最長サブツリーとルートノードとについてです。

クラスのソリューション{ 
:公共
    int型diameterOfBinaryTree(TreeNodeの*ルート){ 
		(!ルート)であれば
			、戻り0; 
		G_MAX = INT_MIN。
		コア(ルート)。
		G_MAX返します。
    } 
:プライベート
	int型コア(のTreeNode *ルート)
	{ 
		(!ルート)であれば
			、戻り0; 
		INT左=コア(root->左)。
		int型の右=コア(root->右)。
		IF(左+右+ 1> G_MAX)
			G_MAX = +左右。
		int型の結果=(左>右)左:?右。
		リターン結果+ 1; 
	} 
	INT G_MAX。
}。

 バイナリツリーがリストに展開されます。

  leetcode114:

  バイナリツリーを考えると、それはリストを拡張置きます。

  

おすすめ

転載: www.cnblogs.com/lxy-xf/p/11345095.html