1

私は昨日何かを投稿し、開始するための助けを得ました。そして、もうすぐそこにいるような気がします. プライマリ キーを名前として、セカンダリ キーをその人物の重みとして BST を作成しました。最小の重み (2 次キー) を検索することを除いて、必要なすべてを完了することができました。最小重量を検索する私の方法は事前注文トラバーサルであり、すべての重量が画面に正しく出力されます。どれが今最も低いかを判断するためのテクニックは何ですか? 私はいくつかの異なる if ステートメントを試し、minwt int を作成しましたが、うまくいきません (再帰と関係があると思います)。とにかく、ここにコードがあります。いつものように、どんな助けも大歓迎です。ありがとう。

#include <iostream>

using namespace std;

class tNode
{
public:
    string name;
    int wt;
    tNode *left, *right;

    tNode()
    {
        left = right = 0;
    }

    tNode(string name, int wt, tNode *l = 0, tNode *r = 0)
    {
        this->name = name;
        this->wt = wt;
        left = l;
        right = r;
    }
};

class bSTree
{
public:
    tNode *root;

    bSTree()
    {
        root = 0;
    }

    bool add(string name, int wt)
    {
        tNode *temp = root, *prev = 0;
        while (temp != 0)
        {
            prev = temp;
            if (name < temp->name)
            {
                temp = temp->left;
            }
            else
            {
                temp = temp->right;
            }
        }

        if (root == 0)
        {
            root = new tNode(name, wt);
        }
        else if (name < prev->name)
        {
            prev->left = new tNode(name, wt);
        }
        else if (name > prev->name)
        {
            prev->right = new tNode(name, wt);
        }
        else
        {
            return false;
        }
        return true;
    }

    void searchWeight(tNode* temp)
    {
        // DETERMINE LOWEST WEIGHT CONTAINED IN TREE

        if (temp != 0)
        {
            cout << temp->wt << endl;
            searchWeight(temp->left);
            searchWeight(temp->right);
        }
    }
};
4

1 に答える 1