我的全部数据结构代码:https://github.com/ylzf0000/DataStructure
全部代码太多,不一一贴出,有兴趣的可前往一观。欢迎留言评论!
template<typename T>
auto BiTree<T>::generateByPreAndIn(const T pre[], int l1, int r1, const T in[], int l2, int r2) -> Node *
{
/*改进版本,可能是自己写的最好的? */
if (l1 > r1 || l2 > r2)
return nullptr;
Node *node = new Node{ pre[l1] };
int pos;
for (pos = l2; pos <= r2 && in[pos] != node->data; ++pos);
node->lchild = generateByPreAndIn(pre, l1 + 1, l1 + pos - l2, in, l2, pos - 1);
node->rchild = generateByPreAndIn(pre, l1 + pos - l2 + 1, r1, in, pos + 1, r2);
return node;
}