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:
バイナリツリーを考えると、それはリストを拡張置きます。