数据结构 - 把一个整数数组放到二叉树中使其有序(C++)

版权声明:欢迎转载并请注明出处,谢谢~~ 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:
/*

*/

猜你喜欢

转载自blog.csdn.net/chimomo/article/details/7713487