#include <iostream>
using namespace std;
class Node
{
public:
int data;
Node *parent;
Node *left;
Node *right;
public:
Node():data(-1),parent(NULL),left(NULL),right(NULL){}
Node(int num):data(num),parent(NULL),left(NULL),right(NULL){}
};
class Tree
{
public:
Tree(int num[], int len);
void insertNode1(int data);
void insertNode(int data);
Node *searchNode(int data);
void deleteNode(int data);
private:
void insertNode(Node *current, int data);
Node *searchNode(Node *current, int data);
void deleteNode(Node *current);
private:
Node *root;
};
Tree::Tree(int num[], int len)
{
root = new Node(num[0]);
for(int i = 1; i < len; i++)
insertNode1(num[i]);
}
void Tree::insertNode1(int data)
{
Node *p, *par;
Node *newNode = new Node(data);
p = par = root;
while(p != NULL)
{
par = p;
if(data > p->data)
p = p->right;
else if(data < p->data)
p = p->left;
else if(data == p->data)
{
delete newNode;
return;
}
}
newNode->parent = par;
if(par->data > newNode->data)
par->left = newNode;
else
par->right = newNode;
}
void Tree::InOrderTree()
{
if(root == NULL)
return;
InOrderTree(root);
}
void Tree::InOrderTree(Node *current)
{
if(current != NULL)
{
InOrderTree(current->left);
cout < <current->data < <" ";
InOrderTree(current->right);
}
}
int main()
{
int num[] = {5, 3, 7, 2, 4, 6, 8, 1};
Tree tree(num, 8);
cout < <"InOrder:";
tree.InOrderTree();
cout < <endl;
system("pause");
return 0;
}
二叉搜索树
最新推荐文章于 2023-01-09 15:27:08 发布