Java는 트리 구조 데이터의 귀속과 비귀속을 실현한다
1513 단어 Java 기반
트리 구조의 귀속과 비귀속의 두루
귀환은 많은 상황에서 우리가 사용한다. 예를 들어 유명한 한노타 문제, 이분 찾기 등이다. 때때로 우리가 나무 데이터 구조를 두루 훑어본 데이터도 귀환에 필요하지만 절대적인 것은 아니다.원인은 한 그루의 나무 구조를 반복하는 데이터를 예로 들면 반복은 현재의 방법을 끊임없이 사용하고 깊이 있게 반복하는 방식으로 한 갈래 길을 따라 끝까지 가다가 다음 갈래 길을 다시 집행하기 때문이다.이런 상황에서 현재 방법을 호출한 후에 컴파일러는 이 방법의 모든 매개 변수와 되돌아오는 주소를 창고에 압입한다. 이런 상황에서 현재 라인이 현재 방법을 다시 한 번 호출하면 이 브랜치가 충분하게 깊어지면 축적된 창고의 내용이 점점 많아지고 메모리가 넘칠 때까지 계속된다.
따라서 트리 데이터의 구조가 충분할 때 우리는 다른 방법으로 이 데이터를 훑어보아야 한다. 이런 방법은 너비를 통해 나무의 꼭대기부터 훑어보고 이 층을 훑어본 다음에 다음 층을 훑어보고 현재 층을 훑어본 다음에 다음 층을 훑어보고 순서대로 아래로 훑어보는 것이다. 이런 방식은while 순환으로 실현할 수 있다.
트리 구조의 데이터를 반복하는 Java 유사 코드://
TreeNode parent; //
public void traverse(TreeNode parent) {
List childs = getChilds(parent); // parent
if (childs != null) {
for (child : childs) {
// ------------
// child ,
// ------------
traverse(child);
}
}
}
private List getChilds(TreeNode parent) {
//
}
다음은 트리 구조의 데이터에 대한 반복되지 않는 Java 유사 코드입니다.//
TreeNode parent; //
List childs = getChilds(parent); // parent
while (childs != null) {
List tempChilds;
for (child : childs) { //
// ------------
// child ,
// ------------
if (getChilds(child) != null) {
tempChilds.add(child);
}
}
childs = tempChilds;
}
private List getChilds(TreeNode parent) {
//
}
이상의 내용은 참고만 제공할 뿐, 만약 의문이나 착오가 있으면, 모두가 함께 진보하기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드
로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다
FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
//
TreeNode parent; //
public void traverse(TreeNode parent) {
List childs = getChilds(parent); // parent
if (childs != null) {
for (child : childs) {
// ------------
// child ,
// ------------
traverse(child);
}
}
}
private List getChilds(TreeNode parent) {
//
}
//
TreeNode parent; //
List childs = getChilds(parent); // parent
while (childs != null) {
List tempChilds;
for (child : childs) { //
// ------------
// child ,
// ------------
if (getChilds(child) != null) {
tempChilds.add(child);
}
}
childs = tempChilds;
}
private List getChilds(TreeNode parent) {
//
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다 FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.