무릇 나무는 우선 귀속적인 방법으로 할 수 있는지를 고려해야 한다.예:
층차: 1, 2, 3, 4, 5, 6, 7.
중서: 42 5 1 6 3 7
1은 반드시 루트 노드이고 중서에서 위치를 찾습니다. 중서의 1은 중서를 좌우 트리로 나눈다. 우리는 v1로 왼쪽 트리의 노드를 저장하고 층서에서 두 번째 노드부터 층계의 순서에 따라 순서대로 v2, v3에 들어갑니다.v2, v3는 각각 왼쪽 나무와 오른쪽 나무의 층계가 두루 다니기 때문에 자 문제가 된다.
첫 번째 귀속은 이곳 v2는 245이다.v3은 3, 6, 7
그리고 더 이상 말할 필요가 없겠죠. 전차와 후차 조작 사상은 똑같아요. 대부분 코드가 똑같아요. 바로push_백 순서가 달라요.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// , 。。。
using namespace std;
int sum = 0;
vectorpreorder, inorder, postorder, levelorder;
void getpreorder(vectorv,int instart,int inend) {
if (v.size()==0)
return;
int i = 0;
while (inorder[instart + i] != v[0])
i++;
vectorv1, v2,v3;
for (int j = instart; j <= instart+i-1; j++) {
v1.push_back(inorder[j]);
}
for (int j = 1; j < v.size(); j++) {
if (find(v1.begin(), v1.end(), v[j]) != v1.end())
v2.push_back(v[j]);
else
v3.push_back(v[j]);
}
preorder.push_back(v[0]);
getpreorder(v2, instart, instart + i - 1);
getpreorder(v3, instart + i + 1, inend);
}
void getpostorder(vectorv, int instart, int inend) {
if (instart > inend)
return;
int i = 0;
while (inorder[instart + i] != v[0])
i++;
vectorv1, v2, v3;
for (int j = instart; j <= instart + i - 1; j++) {
v1.push_back(inorder[j]);
}
for (int j = 1; j < v.size(); j++) {
if (find(v1.begin(), v1.end(), v[j]) != v1.end())
v2.push_back(v[j]);
else
v3.push_back(v[j]);
}
getpostorder(v2, instart, instart + i - 1);
getpostorder(v3, instart + i + 1, inend);
postorder.push_back(v[0]);
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int tem;
scanf("%d", &tem);
levelorder.push_back(tem);
}
for (int i = 0; i < n; i++) {
int tem;
scanf("%d", &tem);
inorder.push_back(tem);
}
getpreorder(levelorder, 0, n - 1);
getpostorder(levelorder, 0, n - 1);
for (int i = 0; i < preorder.size(); i++) {
printf("%d ", preorder[i]);
}
cout << endl;
for (int i = 0; i < postorder.size(); i++) {
printf("%d ", postorder[i]);
}
system("pause");
return 0;
}
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.