插入过程:插入子树,返回根结点,若子树为空,则新建节点并做为根结点返回
#include <iostream>
using namespace std;
struct treeNode {
int data;
treeNode* leftChild;
treeNode* rightChild;
treeNode(int i) {
data = i;
leftChild = NULL;
rightChild = NULL;
}
};
treeNode* insert(treeNode* root, int x, int father) {
if (root == NULL) {
root = new treeNode(x);
cout << father << endl;
} else if (x >= root->data) {
root->rightChild = insert(root->rightChild, x, root->data);
} else {
root->leftChild = insert(root->leftChild, x, root->data);
}
return root;
}
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
// cout << a + b << endl;
treeNode* root = NULL;
for (int i = 0; i < n; i++) {
int temp;
cin >> temp;
root = insert(root, temp, -1);
}
}
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号