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

来源:互联网 发布:c 排序算法实现 编辑:程序博客网 时间:2024/04/29 10:58

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

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);}}


 

原创粉丝点击