为了方便 决定把节点类 二叉树类写在一个cpp文件里面
节点类
struct Node
{
Node* pLeft;
Node* pRight;
char data;
}
二叉树的重构方法
Node* Rebuild(string preOrder,string midOrder)
{
if(preOrder.size()==0)
return NULL;
if(midOrder.size()==0)
return NULL;
Node* pRoot = new Node;
(pRoot)->data = preOrder[0];
int root_pos = midOrder.find_first_of(preOrder[0]);
if(root_pos == -1)
{
return NULL;
}
int left_ele_num = root_pos;
int right_ele_num = preOrder.size()-left_ele_num-1;
pRoot->pLeft=Rebuild(preOrder.substr(1,1+left_ele_num),midOrder.substr(0,left_ele_num));
pRoot->pRight=Rebuild(preOrder.substr(root_pos+1,right_ele_num),midOrder.substr(root_pos+1,right_ele_num));
return pRoot;
}