9 도 OJ 1009:이 진 트 리 두 그루 나무 판 등+이 진 트 리 구축
관건 은 나 무 를 짓 는 과정 과 두 그루 의 나무 가 같은 지 판정 하면 된다 는 것 이다.두 그루 의 나무 가 같은 지 아 닌 지 를 판단 하 는 것 은 재 귀 로 해결 할 수 있 습 니 다.먼저 현재 의 결점 이 같 거나 모두 비어 있 는 지 를 보고 두 그루 의 나무의 상황 을 볼 수 있 습 니 다.
제목 URL:http://ac.jobdu.com/problem.php?id=1009
제 AC 코드 를 여러분 과 공유 하 겠 습 니 다.
#include<iostream>
#include<stdio.h>
using namespace std;
struct Node
{
int d;
Node *l, *r;
Node(int data)
{
d = data;
l = r = NULL;
}
};
bool search(Node * root, Node *& fa, int key)
{
if(!root) return false;
else
{
while(root)
{
fa = root;
if(key > root->d) root = root->r;
else if(key < root->d) root = root->l;
else return true;
}
return false;
}
}
void insert(Node * &root, int key)
{
if(!root)
{
root = new Node(key);
return;
}
else
{
Node *ins;
if(!search(root, ins, key))
{
if(key > ins->d) ins->r = new Node(key);
else ins->l = new Node(key);
}
}
}
bool treeCom(Node *s, Node *t)
{
if(!s && !t) return true;
else if(!s || !t) return false;
if(s->d != t->d) return false;
if(treeCom(s->l, t->l) && treeCom(s->r, t->r)) return true;
}
int main()
{
int n;
Node *r, *s;
char str[11];
while(scanf("%d", &n) && n)
{
r = NULL;
scanf("%s", str);
for(int i=0; i<10; i++) insert(r, str[i] - '0');
for(int i=0; i<n; i++)
{
s = NULL;
scanf("%s", str);
for(int i=0; i<10; i++) insert(s, str[i] - '0');
if(treeCom(r, s)) printf("YES
");
else printf("NO
");
}
}
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
언제가 아닌가프로그래밍 언어에서 null 참조가 수십억 달러의 실수라는 말을 이미 들었을 것입니다. Java의 유명하고 두려운 NullPointerException은 여러분이 알고 있거나 C의 분할 오류일 수 있습니다. 모든 상...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.