0
我正在嘗試編寫一個BST(),它將字符串作爲節點,而不使用遞歸。這裏是我的代碼的添加功能,請你回顧一下,看看是否易於理解/遵循並指出錯誤。我是編程新手,希望得到任何反饋。簡單二叉搜索樹非遞歸添加函數
#include <iostream>
#include <string>
#include <stack>
#include <queue>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main() {
class BST {
private:
struct Node {
string value;
Node* left;
Node* right;
};
Node* root;
public:
BST()
{
root = NULL;
}
~BST()
{
stack<Node*> nodes;
nodes.push(root);
while(! nodes.empty())
{
Node* topNode = nodes.top();
nodes.pop();
if (topNode->left)
nodes.push(topNode->left);
if (topNode->right)
nodes.push(topNode->right);
delete topNode;
}
}
Node* GetNewNode(string data){
Node* newNode = new Node();
newNode->value=data;
newNode->left = newNode->right = NULL;
return root;
}
Node* Insert(Node* rootPtr,string data){
if(rootPtr == NULL){
rootPtr = GetNewNode(data);
return rootPtr;
}
else if(data<= rootPtr->value){
rootPtr->left = Insert(rootPtr->left,data);
}
else {
rootPtr->right = Insert(rootPtr->right,data);
}
return rootPtr;
}
};
}
請問您是否可以正確縮進您的代碼,這很難理解。 –
請提供編譯的代碼。 –
你好,當我上次編譯它時,代碼確實編譯了 – farah