数的节点
struct node
{
int val;
node* left;
node* right;
};
1. 通过数组创建二叉树
node* createBT(int *data, int n, int pos);
根据data数组创建一颗二叉树
node* createBT(int * data, int n, int pos)
{
node* newnode;
if (pos > n)
{
return nullptr;
}
else
{
newnode = new node();
newnode->val = data[pos];
newnode->left = createBT(data, n, 2 * pos);
newnode->right = createBT(data, n, 2 * pos + 1);
return newnode;
}
}
2. 通过数组创建二叉搜索树
二叉搜索树是特殊的二叉树,左子树比根小,右子树比根大。
void createTree(node*& root, int* data, int n);
void createTree(node *& root, int * data, int n)
{
for (int i = 0; i < n; i++)
{
insert(root, *data);
data++;
}
}
插入节点的函数
void insert(node *& root, int x)
{
if (root == nullptr)
{
root = new node();
root->val = x;
return;
}
if (x > root->val)
{
insert(root->right, x);
}
else
insert(root->left, x);
}