[ad_1]
ここに私のメインプログラムがあります
#include <stdio.h> #include "tree.h" #include <stdlib.h> int menu(void); int main (void){ What I have tried: This program works but lets say if a tree has the nodes, 1 2 3 4 5 6 7, and the user inputs to delete the number 8, I need it to display a message saying that that number does not exist within the tree
解決策 1
ツリーはさまざまな方法でトラバースできますが、主に使用されるのは次のとおりです。 Inorder
、 Preorder
と Postorder
.
次の手順の内訳が役立ちます。
1. ツリー トラバーサル メソッドの 1 つを使用して、現在のノードが検索しているノードと一致するかどうかを確認します。
2. 見つかった場合は、ノードを削除し、それ以上のトラバースを停止します
3. ツリーが完全にトラバースされ、一致するノードがない場合は、Node not found が表示されます。
C++
// Using preorder traversal bool checkIfNodeExists(struct Node* node, int key) { // empty node/nothing to search in if (node == NULL) return false; // node found if (node->data == key) return true; // recurrsion on left subtree bool resultLeft = checkIfNodeExists(node->left, key); if(resultLeft) return true; // recurrsion on right subtree bool resultRight = checkIfNodeExists(node->right, key); if(resultRight) return true; // node not found return false; }
見積もり:void delete_tree(binarytree *tree, int val)
あなたの方法はあまりにも複雑に見えます。 そこから共通のロジックを抽出する必要があります。
このメソッドは、削除するために検索しているノードを checkIfNodeExists
メソッドを実行し、結果に基づいて、削除またはメッセージ (見つからない場合) のアクションを実行します。 これにより、何かが欠けている可能性があり、変更を加える必要がある場所を簡単に確認できます。
[ad_2]
コメント