您的位置:首页 > 其它

通过中序和后续遍历数组重建二叉树

2012-06-30 13:16 169 查看
和前面的两种方式类似,根据后续遍历数组的最后一个元素可以在中序数组中找到根节点,然后左边的为左子树,右边的为右子树。递归可得二叉树。

void CreateTreeByMidAndPost(Node* node, char * mid, char * post, int size)
{
if(NULL ==node)
{
return;
}
if(1 == size )
{
node->value = post[size -1];
return;
}

node->value = post[size -1];
int subSize = 0;
while( post[size -1] != mid[subSize])
{
++subSize;
}

if(subSize > 0)
{
Node* child = new Node;
node->Left = child;
CreateTreeByPreAndMid(child, mid,post, subSize );
}

if(subSize < size)
{
Node* child = new Node;
node->Right = child;
CreateTreeByPreAndMid(child, mid+subSize + 1,post + subSize, size - subSize - 1);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐