7-4 두 갈래 나무의 매 결점의 왼쪽 아이와 오른쪽 아이를 교환한다(20분)
두 갈래 체인 시계를 두 갈래 나무의 저장 구조로 삼아 두 갈래 나무의 각 결점의 왼쪽 아이와 오른쪽 아이를 교환한다.
생각:
먼저 주어진 문자열에 따라 두 갈래 나무를 먼저 세우고 여기에 살짝 끼었다(그래서 블로그를 써서 저장하기로 했다).
지어지면 그만이고, 차례차례 좌우 나무를 교환한다.
그리고 귀환 중 차례차례 반복하면 오케이!
코드:
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 1000000000
#define inf 0x3f3f3f3f
#define FRE() freopen("in.txt","r",stdin)
using namespace std;
typedef long long ll;
const int maxn = 10005;
struct Node
{
char date;
Node* rt;
Node* lt;
};
typedef Node* Tree;
int len,idx;
string str;
void build(Tree& root)
{
if(str[idx]=='#'||idx==len) return;
root = new Node;
root->date = str[idx];
root->lt = NULL;
root->rt = NULL;
idx++;// , ok
build(root->lt);
idx++;
build(root->rt);
return;
}
void exchangeNode(Tree& root)// !
{
if(root->lt==NULL && root->rt==NULL)
return;
Node* temp;
temp = root->lt;
root->lt = root->rt;
root->rt = temp;
if(root->lt!=NULL)
exchangeNode(root->lt);
if(root->rt!=NULL)
exchangeNode(root->rt);
}
void midTravel(Tree root)//
{
if(root->lt!=NULL)
midTravel(root->lt);
printf("%c",root->date);
if(root->rt!=NULL)
midTravel(root->rt);
}
int main()
{
// FRE();
cin>>str;
len = str.length();
idx = 0;
Tree root = NULL;
build(root);
midTravel(root);
printf("
");
exchangeNode(root);
midTravel(root);
return 0;
}
다음으로 전송:https://www.cnblogs.com/sykline/p/10579453.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.