tree 의 높이 구하는 알고리듬…이해가…

s 76.***.207.158

이 동영상은 그냥 오버올 리뷰라 내 이해엔 별 도움이 안되는군요. 사실 바이너리추리나 바이너릿서치추리의 프리어더 인오더 포스트오더 트래스버스에 관련한 이런 리커시브는 이해가 어렵지 않은데요. 멀티플 리커시브 콜즈, Call Stack 부분이 내가 계속 파고들어야갈 부분같네요. 아이터레이티브는 그런대로 이해가 어렵지않은데 리커시브만 들어가면 내 머리가 약해져요. 특히 리커시브함수안에 여러개의 리커시브 리턴 케이스가 존재할경우.

일단 원글의 데이타스트럭춰와 관련한 리커시브에서 내가 헷갈리는 이유는 리커시브 리턴밸류나 변수들의 스코프에 대해서도 헷갈리고 있는듯하네요. (리턴밸류가 저장되어있다가 누적되는 부분. 어떻게 하위리커시브 함수 리턴밸류가 상위의 저장된값에 다시 합해져 저장되는지) 리커시브함수들에 대해서 한번 다시 먼저 살펴봐야 겠어요. 아마 내가 혼동한 부분이 리턴이 1(1번째 리턴값 1)+0 (2번째 리턴값 0)+0 (3번째리턴값 0)+0+1+0+..+1 이런식으로 리커시브가 전진할수록 누적(? 이것도 오해인듯)이 되었는데 리턴이 0일때 이전의 리턴값이 다 와이프아웃 되어버려야 된다고 생각해서였던거 같기도 하고요.

그런데 두변수 left_height와 right_height 가 함수안에서 로컬 밸류로 정의되었기 때문에, 계속 누적되는 부분이 아직도 이해가 안가네요. 각각의 리커시브가 콜링될때마다 이 값들이 다시 셋업되어 버려서 누적이 안될거 같은데…(아마 이게 내 혼동의 근원인듯하네요)