二叉搜索树:对于树中的每个节点,它的左子树中所有节点的值都小于父结点,右子树所有值都大于父结点。
创建实现:
#include<iostream>
#include<queue>
#include<stack>
using namespace std;
struct BinaryNode
{
BinaryNode* _left;
BinaryNode* _right;
BinaryNode* _parent;
int _value;
BinaryNode(const int& value)
:_value(value)
, _left(NULL)
, _right(NULL)
, _parent(NULL)
{}
};
BinaryNode* CreateBinaryTree(int* array, int length)
{
BinaryNode* root = new BinaryNode(array[0]);
BinaryNode* pTemp = NULL;
for (int idx = 1; idx < length; idx++)
{
BinaryNode* pCur = root;
//寻找插入位置
while (pCur)
{
if (array[idx]<pCur->_value)
{
pTemp = pCur;
pCur = pCur->_left;
}
else if (array[idx]>pCur->_value)
{
pTemp = pCur;
pCur = pCur->_right;
}
else
return NULL;
}
//插入元素
pCur = new BinaryNode(array[idx]);
if (array[idx] < pTemp->_value)
pTemp->_left = pCur;
else
pTemp->_right = pCur;
}
return root;
}
int main()
{
BinaryNode* pRoot = NULL;
int array[] = { 10, 6, 14, 4, 8, 12, 16 };
int length = sizeof(array) / sizeof(array[0]);
pRoot = CreateBinaryTree(array, length);
system("pause");
return 0;
}