프로 그래 밍 연습 - 이 진 트 리 (이 진 트 리 회전 양 방향 링크)

1. 이원 찾기 트 리 를 정렬 된 양 방향 링크 로 변환 * * *
 제목:
이원 찾기 트 리 를 입력 하고 이 이원 찾기 트 리 를 정렬 된 양 방향 링크 로 변환 합 니 다.
새로운 노드 를 만 들 수 없고 포인터 의 방향 만 조정 하 라 고 요구 합 니 다.
   10
  / /
  6  14
 / / / /
4  8 12 16
 양 방향 링크 로 변환
4=6=8=10=12=14=16。
 
 먼저 우리 가 정의 한 이원 찾기 트 리 노드 의 데이터 구 조 는 다음 과 같다.
 struct BSTreeNode
{
  int m_nValue; // value of node
  BSTreeNode *m_pLeft; // left child of node
  BSTreeNode *m_pRight; // right child of node
};
해답:
먼저 순서대로 옮 겨 다 니 며 모든 노드 에 대해 포인터 가 왼쪽 나무의 가장 오른쪽 노드 (왼쪽 나무의 최대 노드) 를 가리 키 고 그의 오른쪽 포인터 가 오른쪽 나무의 가장 왼쪽 노드 (오른쪽 나무의 최소 노드) 를 가리 키 며 먼저 이 두 노드 를 찾 아야 한다. 그러나 이 두 노드 의 지침 은 먼저 조정 하지 않 고 왼쪽 나무 와 오른쪽 나 무 를 재 귀적 으로 호출 한 후에 이 두 노드 를 조정 해 야 한다.프로그램 이 정상적으로 실 행 될 수 있 도록 이 두 노드 를 미리 조정 하면 좌우 서브 트 리 의 나무 구조 가 파괴 되 고 운행 이 순환 되 지 않 습 니 다.
다음은 코드: 
참고 문헌:
http://www.360doc.com/content/07/0228/15/11586_379396.shtml
http://blog.csdn.net/qjt_uestc/article/details/6618022

좋은 웹페이지 즐겨찾기