두 갈래 정렬 트 리 에 대해 루트 노드 를 만 들 고 되 돌려 줍 니 다.

1321 단어 ACM
오늘 문 제 를 풀 었 는데 뿌리 노드 로 돌아 가 야 한 다 는 것 을 알 게 되 었 습 니 다.더 이상 생각 하고 싶 지 않 아서 인터넷 에서 찾 아 보 았 습 니 다.그 중에서 제공 하 는 방법 은 모두 부모 노드 를 사용 해 야 한 다 는 것 을 알 게 되 었 습 니 다.사실은 아버지 노드 를 사용 할 필요 가 없습니다.
재 귀 함수 반환 값 만 사용 하면 됩 니 다.
이 진 트 리 만 들 기
struct  T{
    int x;
    T *lchild,*rchild;
};
T* init(T* &t){// t      t=NULL;e==0        
    int e;
    scanf("%d",&e);
    if(e==0)t=NULL;
    else {
        t=new T;
        t->x=e;
        init(t->lchild);
        init(t->rchild);
    }
    return t;
}
    

여기 지침,지침 의 인용 을 소개 합 니 다.
함수 매개 변 수 는 전송 값 을 전달 합 니 다.지침 은 주소 로 전달 되 기 때문에 형 참여 실 삼 은 공동으로 변 수 를 가리 키 고 형 삼 의 값 을 수정 하면 변수의 값 도 수정 되 었 습 니 다.
출력 은 헤드 가 가리 키 는 변수,즉 변수 p 의 값 을 수정 한 것 을 설명 한다.
인용 을 더 하 는 것 은 사실 포인터 에 해당 하 는 효과 입 니 다.아래 를 보 세 요.
4.567913.첫 번 째 와 세 번 째 값 을 수정 하면 인용 이 지침 의 편리 한 방식 으로 이해 할 수 있다.
4.567913.요약 하면 다음 과 같다.형 삼 은 T&t 이 고 실제 인삼 의 값 을 수정 한 것 이다.형 삼 은 T*t 이 고 실제 인삼 주소 가 가리 키 는 변수의 값 을 수정 합 니 다.형 삼 은 T*&t 이 고 실제 인삼 의 값,즉 지침 의 값 을 수정 합 니 다.
따라서 데이터 구조 과정 에서 재 귀적 으로 트 리 를 만 들 때(예 를 들 어 첫 번 째 코드)인용 을 추가 하지 않 으 면 재 귀적 함수 의 첫 번 째 층 에서 트 리 의 값 x 를 수정 합 니 다.서브 트 리 를 만 들 때 뿌리 노드 의 아이 가^를 저장 하기 때문에 함수 호출 시^만 들 어 왔 습 니 다. ^가 가리 키 는 내용 을 수정 하면 당연히 쓸모 가 없다.
 동적 트 리 를 참조 하지 않 아 도 됩 니 다.
4.567913.입력 은 0 으로 끝 납 니 다.

좋은 웹페이지 즐겨찾기