0

1週間前のテストで次の問題がありました。成績は戻っていませんが、私の解決策は問題のすべての基本ケースを完全に対象としていたわけではありません。

声明は次のとおりです。

Binary Searcht ツリーの場合、与えられた整数 k 以上のキーを持つノードの数を計算するアルゴリズムを (疑似コードを使用して) 書きます。アルゴリズムは、最悪の場合の時間 O(h) で実行する必要があります。ここで、h は二分探索木の高さです。

時間 O(1) で実行され、n をルートとするサブツリーのノード数 (n 自体を含む) を返すメソッド subtreeSize(treeNode n) が与えられたとします。

これが私の解決策です:

nbNodesGreaterEqual(treeNode n, int k){

    if(n == null) return 0;
    if(n.getValue() >= k) return 1 + substreeSize(n.getRightChild()) + nbNodesGreaterEqual(n.getLeftChild(), k);
    if(n.getValue < k) return nbNodesGreaterEqual(n.getRightChild,k);
}

アルゴリズムは完成していますか? また、すべてのノードを通過しない通常のバイナリ ツリー (BST ではない) に対して同じアルゴリズムを記述する方法はありますか?

4

1 に答える 1