版权声明:欢迎转载并请注明出处,谢谢~~ https://blog.csdn.net/chimomo/article/details/7713487
/*
* Created by Chimomo
*
* 二叉搜索树的建树方法。简单的递归结构。
*/
#include <iostream>
#define NULL 0
using namespace std;
template<class T>
struct BTNode {
T data;
BTNode<T> *pBTNodeLeft, *pBTNodeRight;
BTNode();
BTNode(const T &val, BTNode<T> *pBTNodeLeft = NULL, BTNode<T> *pBTNodeRight = NULL) {
this->data = val;
this->pBTNodeLeft = pBTNodeLeft;
this->pBTNodeRight = pBTNodeRight;
}
BTNode<T> *CopyTree() {
BTNode<T> *pBTNodeLeft, *pBTNodeRight, *pBTNode;
if (&data == NULL) {
return NULL;
}
pBTNodeLeft = pBTNodeLeft->CopyTree();
pBTNodeRight = pBTNodeRight->CopyTree();
pBTNode = new BTNode<T>(data, pBTNodeLeft, pBTNodeRight);
return pBTNode;
}
};
template<class T>
BTNode<T>::BTNode() {
pBTNodeLeft = pBTNodeRight = NULL;
}
template<class T>
void insertNode(BTNode<T> **pBTNode, T val) {
BTNode<T> *pBTNodeNew = (BTNode<T> *) malloc(sizeof(BTNode<T>));
pBTNodeNew->data = val;
pBTNodeNew->pBTNodeLeft = NULL;
pBTNodeNew->pBTNodeRight = NULL;
if (!(*pBTNode)) {
*pBTNode = pBTNodeNew;
} else if (pBTNodeNew->data < (*pBTNode)->data) {
insertNode(&(*pBTNode)->pBTNodeLeft, val);
} else {
insertNode(&(*pBTNode)->pBTNodeRight, val);
}
}
int main() {
int arr[7] = {3, 1, 2, 6, 4, 5};
BTNode<int> *pBTNode = NULL;
for (int i = 0; i < 6; i++) {
insertNode(&pBTNode, arr[i]);
}
return 0;
}
// Output:
/*
*/