本文共 1063 字,大约阅读时间需要 3 分钟。
题目链接:https://www.patest.cn/contests/pat-a-practise/1099
#include#include #include #include #include #include #include using namespace std;struct Node{ int number,leftNum,rightNum; Node *left,*right; Node():number(0),leftNum(0),rightNum(0),left(NULL),right(NULL){};};int calcLeftNodeNum(Node * T){ if(T==NULL) return 0; T->leftNum = calcLeftNodeNum(T->left); T->rightNum = calcLeftNodeNum(T->right); return T->leftNum + T->rightNum+1;}void setNum(Node *T,int start,vector target){ if(T==NULL) return; T->number = target[start+T->leftNum]; setNum(T->left,start,target); setNum(T->right,start+T->leftNum+1,target);}int main(){ int n,l,r; scanf("%d",&n); vector BST; for (int i=0; i left = BST[l]; else BST[i]->left = NULL; if(r!=-1) BST[i]->right = BST[r]; else BST[i]->right = NULL; } vector target(n); for (int i=0; i q; if(root) q.push(root); while (!q.empty()) { Node * p = q.front(); q.pop(); target.push_back(p->number); if(p->left) q.push(p->left); if(p->right) q.push(p->right); } for(int i=0;i
转载地址:http://zqhji.baihongyu.com/