일반적으로 해석하는 이진 트리는 내부 스택 혹은 외부 스택을 통해서 순회를 하였다.
BUT 스레드 이진 트리는 스택을 이용하지 않고 포인터를 이용함!
스레드 이진 트리는 이렇게 생겼다! 위 그림에서 점선을 스레드라고 함
typedef struct node
{
bool leftThread; // 왼쪽에 스레드가 형성되었는지
struct node *leftChild; // 왼쪽 부분이 어떤 노드?
int data; // 데이터
struct node *rightChild; // 오른쪽 부분이 어떤 노드?
bool rightThread; // 오른쪽에 스레드가 형성되어있는지
}
스레드는 리프노드에만 적용한다
위 트리를 중위 순회 하면 H->D->I->B->E->A->f->C->G
이다. H의 중위 선행자와 G의 중위 후행자는 없다.
-> 이를 대비하기 위해 스레드 이진 트리에서는 root라는 dummy node 를 만들어 H와 G의 포인팅을 도와준다.
-> 노드의 위치를 잃지 않고 저장하기 위함과 스레드 이진 트리의 정의를 명확히 하기 위해서
https://www.crocus.co.kr/366
https://blog.naver.com/PostView.naver?blogId=boldfaced7&logNo=222261232275&parentCategoryNo=&categoryNo=28&viewDate=&isShowPopularPosts=true&from=search