我们知道前序、中序和后序遍历。什么算法可以重建 BST?
因为是 BST,in-order
可以排序自pre-order
or post-order
。其实,无论是pre-order
or post-order
只需要....
如果你知道比较函数是什么
From pre-order
and in-order
,构建二叉树
BT createBT(int* preOrder, int* inOrder, int len)
{
int i;
BT tree;
if(len <= 0)
return NULL;
tree = new BTNode;
t->data = *preOrder;
for(i = 0; i < len; i++)
if(*(inOrder + i) == *preOrder)
break;
tree->left = createBT(preOrder + 1, inOrder, i);
tree->right = createBT(preOrder + i + 1, inOrder + i + 1, len - i - 1);
return tree;
}
这背后的理由:
在预序中,第一个节点是根。按顺序求根。那么树就可以分为左树和右树。递归地进行。
类似的post-order
and in-order
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)