两序遍历递归建立二叉树
前序中序遍历建立二叉树
1 Node * createTree1(string pres, string cens) { 2 if(pres.size() == 0 || cens.size() == 0) { 3 return nullptr; 4 } 5 Node * node = new Node(); 6 node->data = pres.at(0); 7 int key = cens.find(pres.at(0)); 8 9 string mpres = pres.substr(1, key); 10 string mcens = cens.substr(0, key); 11 node->left = createTree1(mpres,mcens); 12 13 mpres = pres.substr(key+1, pres.size()-key-1); 14 mcens = cens.substr(key+1, cens.size()-key-1); 15 node->right = createTree1(mpres,mcens); 16 return node; 17 };
中序后序遍历建立二叉树
后序中序遍历就是将前序中序遍历中的对前序的操作转换为对后序的操作,前序从第一个开始取,后序从后往前取。对中序操作不变