前言
一、二叉搜索树的概述
二、搜索树的创建
1.节点创建
#include <iostream>
using namespace std;
template<class T>
struct BSTNode
{
BSTNode<T>* _left;
BSTNode<T>* _right;
T _data;
BSTNode(const T& data)
;_left(nulptr)
,_right(nullptr)
,_data(data)
{
}
}
2. 树的构建
template<class K>
class BSTree
{
typedef BSTreeNode<K> Node;
public:
BSTree()
:_root(nullptr)
{
}
private:
Node* _root;
}
1. 插入(非递归)
bool Insert(const T& data)
{
if (_root == NULL)
{
_root = new Node(data);
return true;
}
Node* parent = NULL;
Node* cur = _root;
while (cur)
{
if (cur->_data < data)
{
parent = cur;
cur = cur->_right;
}
else if (cur->_data > data)
{
parent = cur;
cur = cur->_left;
}
else
{
return false;
}
}
cur = new Node(data);
if (parent->_data < data)
{
parent->_right = cur;
}
else
{
parent->_left = cur;
}
return true;
}
- 这里有一点需要注意:
在cur = new Node(data) 后,还需要将其与父节点链接起来。
3. 中序遍历
private:
void _InOrder(Node* root)
{
if(root == NULL)
{
return;
}
_InOrder