"Kérdés":

Adott egy bináris keresési fa (BST) root és egy val egész szám.

Keresse meg a BST-ben azt a csomópontot, amelynél a csomópont értéke val, és adja vissza az adott csomóponttal gyökerező részfát. Ha ilyen csomópont nem létezik, adja vissza a null értéket.

1. példa:

Input: root = [4,2,7,1,3], val = 2
Output: [2,1,3]

Megoldás:

Az adott feladatban van egy értékünk, amit az adott bináris keresőfában kell keresnünk.

A bináris keresési fák esetében tudjuk, hogy a bal oldali részfa kisebb, mint a gyökérérték, a jobb oldali részfa pedig nagyobb, mint a gyökérérték.

Így könnyen megkereshetjük az értéket egy bináris keresési fában a hagyományos bináris fákhoz képest.

Első lépésünk annak ellenőrzése, hogy a root értéke null.

if(root == NULL)
    return root;

Létrehozunk egy új csomópontot, amelyet végeredményként adunk vissza.

TreeNode* node = new TreeNode();

Mivel tudjuk, hogy a bal oldali részfa kisebb, mint a root, ezért ellenőrizni fogjuk, hogy az érték kisebb-e, mint a gyökér. Ha igen, akkor ezt az értéket fogjuk keresni a bal oldali részfában.

if(val < root -> val)
    node = searchBST(root -> left, val);

Hasonlóképpen ellenőrizzük, hogy az érték nagyobb-e, mint a gyökér, ezért a megfelelő részfában fogunk keresni.

else if(val > root -> val)
    node = searchBST(root -> right, val);

Ha ezek közül egyik sem működik, akkor a csomópontot egyenlővé tesszük a gyökérrel.

else
    node = root;

Most az utolsó lépés a korábban létrehozott csomópont visszaadása.

return node;

Az alábbiakban látható az adott probléma teljes megvalósítása:

Köszönöm, hogy elolvasta!

S.