>  기사  >  백엔드 개발  >  C 언어에서 이진 트리의 순차 순회를 수행하는 방법은 무엇입니까?

C 언어에서 이진 트리의 순차 순회를 수행하는 방법은 무엇입니까?

coldplay.xixi
coldplay.xixi원래의
2020-07-15 11:26:033695검색

C 언어에서 이진 트리를 순회하는 방법: 먼저 왼쪽 하위 트리를 순회하고 재귀의 도움을 받아 가장 왼쪽 노드까지 계속 방문한 다음 마지막으로 오른쪽 하위 트리를 순회합니다. 가장 오른쪽 노드가 충분할 때까지 재귀의 도움으로 계속 방문하십시오.

C 언어에서 이진 트리의 순차 순회를 수행하는 방법은 무엇입니까?

C 언어에서 이진 트리의 순차 순회 방법:

순차 순회 규칙은 다음과 같습니다. 왼쪽 하위 트리 ---> . 따라서 노드를 방문하는 순서를 변경해야 합니다.

  • 정확히 두 개의 하위 노드(하위 노드 없음)가 있는 노드에 대해 재귀가 앞뒤로 프로세스가 될 때까지 기다립니다. 왼쪽 노드를 한 번만 방문하고, 루트를 방문하고, 오른쪽 노드를 방문하면 됩니다. 그게 다야.

  • 그리고 양쪽에 노드가 있는 경우. 각 노드는 순차 순회 규칙을 충족해야 합니다. 먼저 루트에서 왼쪽 노드를 방문합니다. 왼쪽 노드에 도달하면 왼쪽 노드는 다시 하위 트리가 되며 순차 순회 요구 사항도 충족해야 합니다. 따라서 왼쪽 노드의 왼쪽 노드(존재하는 경우)에 먼저 액세스해야 합니다. 따라서 그렇게 생각하신다면 규칙을 이해하신 것입니다. 하지만 너무 복잡해요. 그런 다음 재귀를 사용합니다. 하위 문제는 루트 노드의 문제와 동일하지만 범위가 축소되기 때문입니다. 그래서 우리는 그것을 해결하기 위해 재귀적 사고를 사용합니다.

  • 재귀 논리는 다음과 같습니다. 특별한 상황(특수한 경우 직접 액세스)을 고려하여 재귀하지 말고, 그렇지 않으면 왼쪽 하위 트리에 재귀적으로 액세스합니다(왼쪽 하위 트리가 동일한 기능을 실행하도록 하고, 특별한 경우 재귀 출력을 중지하고, 그렇지 않은 경우 계속 찾습니다). 특별) 가장 왼쪽 노드까지 )——>노드 출력——>오른쪽 하위 트리에 재귀적으로 액세스합니다.

public void zhongxu(node t)// 中序遍历 中序遍历:左子树---> 根结点 ---> 右子树
{
if (t != null) {
zhongxu(t.left);
System.out.print(t.value + " ");// 访问完左节点访问当前节点
zhongxu(t.right);
}
}

관련 학습 권장 사항: C 비디오 튜토리얼

위 내용은 C 언어에서 이진 트리의 순차 순회를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.