#include <stdio.h> // c 库
#include <stdlib.h> //maclloc 库
#include <iostream> // c++ 库
// 有本句 ,下面cout 前面可以没有 std::
using namespace std;
typedef int ElemType; //元素数据类型 char
#define MAXSIZE 10
typedef struct TreeNode {
ElemType key;
TreeNode* left;
TreeNode* right;
}*Tree;
// loop --- insert Bst Node
Tree InsertBst(Tree &T, ElemType k) {
if (!T) {
T = new TreeNode;
T->key = k;
T->left = T->right = NULL;
return T;
}
Tree p = T;
while (p) {
if (k < p->key)
if (p->left)
p = p->left;
else
{
Tree q = new TreeNode;
q->key = k;
q->left = q->right = NULL;
p ->left = q;
return T;
}
else if (k > p->key)
if (p->right)
p =p->right;
else
{
Tree q = new TreeNode;
q->key = k;
q->left = q->right = NULL;
p->right = q;
return T;
}
}
}
// recursion --- insert Bst Node
Tree InsertBst2(Tree& T, ElemType k) {
if (!T) {
T = new TreeNode;
T->key = k;
T->left = T->right = NULL;
return T;
}
else if (k < T->key)
InsertBst2(T->left, k);
else
InsertBst2(T->right, k);
}
// Use array Creat Bst
void CreatBst(Tree& T,ElemType Str[], int n) {
for (int i = 0; i < n; i++) {
InsertBst2( T, Str[i]);
}
}
// visit TreeNode
void visit(Tree T) {
cout << T->key <<" ";
}
// InOrder traverse Tree
void InTraver(Tree T) {
if (T){
InTraver(T->left);
visit(T);
InTraver(T->right);
}
else return;
}
int main() {
Tree T=NULL;
ElemType Str[MAXSIZE] = { 50,66,60,26,21,30,70,68 };
CreatBst(T, Str, 8);
InTraver(T);
}