我正在尝试从有序和预购构建二叉树。每个节点都保存一个整数值的数据。我在拥有这些数组时遇到了问题:
预购:3,9,2,6,1,1,1,4 预购
:2,9,3,1,1,1,6,4
这是从中提取遍历的原始树:
3
/ \
9 6
/ / \
2 1 4
/ \
1 1
问题是我写的函数无法区分连续相等的数字。
这是 C 中的函数:
TREE createTreeFromPreAndIn(int pre[], int in[], int n){
TREE res;
res.root = createTreeFromPreAndInHelper(pre, in, n);
return res;
}
TNODE* createTreeFromPreAndInHelper(int pre[], int in[], int n){
int index;
TNODE* rootL, *rootR, *root;
if (n == 0)
return NULL;
else {
index = findIndex(in, n, pre[0]); //returns the index of the first appearance of pre[0] in 'in'
rootL = createTreeFromPreAndInHelper(pre+1, in, index);
rootR = createTreeFromPreAndInHelper(pre+1+index, in+index+1, n-index-1);
root = createNewTreeNode(pre[0], rootL, rootR);
return root;
}
}
提前致谢