Home Forums US Life tree 의 높이 구하는 알고리듬…이해가… This topic has [25] replies, 0 voices, and was last updated 3 years ago by s. Now Editing “tree 의 높이 구하는 알고리듬…이해가…” Name * Password * Email Topic Title (Maximum Length 80) 사실 이거 아주 간단한 알고리듬인데...리커시브를 쓰는것들은 프로그램 자체는 구현이 아주 간단해지지만 머릿속으로 쫒아가며 이해하기는 항상 헷갈리네요. 예를들어 트리를 인서트해주고 그 입력된 투리의 하이트를 구하는 일반적인 함수는 int tree_height(Node* root) { // Get the height of the tree if (!root) return 0; else { // Find the height of both subtrees // and use the larger one int left_height = tree_height(root->left); int right_height = tree_height(root->right); if (left_height >= right_height) return left_height + 1; else return right_height + 1; } } 이런식인데... 이해가 잘 안가요. 이해가 안가는 이유는 이게 결국 리커시브가 되면서 결국 마지막 리프에서 레프트와 라이프 포인터가 널포인터가 될것이고 (왜냐하면 인서트 할때 마지막 리프들의 레프트/라이트 포인터들은 널포인터로 채워지니까) 결국 리턴값이 "항상" 0 로 끝날것같은 "착각"이 계속 드는데.... 이 "착각"이 왜 잘못된건지 어디서잘못된건지 잡아내기가 힘들군요. (더 이상한건 프린트해보니...루트에서 리프들쪽으로가 아니라 리프쪽에서 루트쪽으로 리커시브 프로시줘가 이루어지는 듯한 아웃풋이..) I agree to the terms of service Update List