Creat BST

#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);

}

 

上一篇:依据给定序列构建排序二叉树,先序、中序、后续遍历


下一篇:【模板】【BST树】BST删除操作