알고책 트립의 우선순위와 키의 차이가 뭐져?? cjkis 알고책 714 밑 ~ 715책 윗 부분 코드 22.4보면 // root 를 루트로 하는 트립에 새 노드 node 를 삽입한 뒤 결과 트립의 // 루트를 반환한다. Node* insert(Node* root, Node* node) { if(root == NULL) return node; // node 가 루트를 대체해야 한다: 해당 서브트립을 반으로 잘라 // 각각 자손으로 한다 if(root->priority < node->priority) { NodePair splitted = split(root, node->key); node->setLeft(splitted.first); node->setRight(splitted.second); return node; } else if(node->key < root->key) root->setLeft(insert(root->left, node)); else root->setRight(insert(root->right, node)); return root; } if 문으로 비교할 때 위에는 node->priority로 비교하고 또 아래 else if 에서는 node->key로 비교하는데요 설명에는 부모의 우선순위가 자식의 우선순위보다 높다고 되어있는데요 우선순위가 높다는건 key값도 크다는 건가요? 그럼 priority를 비교하든 key를 비교하든 결과가 같은 건가요? 11년 전
2개의 댓글이 있습니다. restart 트립은 힙과 이진 검색 트리를 합한 겁니다. priority는 노드 생성시 랜덤으로 값이 부여되고 key는 값으로 설정이 됩니다. 트립은 priority 기준으로는 힙구조를 유지하고 key기준으로는 이진 검색 트리를 유지합니다. 따라서 새 노드가 root를 대체할지 여부를 priority로 비교하고, 아니라면 루트의 왼쪽에 위치해야 할지 오른쪽에 위치해야 할지 key를 기준으로 비교합니다. 11년 전 link cjkis 감사감사 key가 데이터였구나 나는 무슨 램덤씨앗같은건줄알앗넹ㅋㅎ 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
cjkis
알고책 714 밑 ~ 715책 윗 부분 코드 22.4보면
if 문으로 비교할 때 위에는 node->priority로 비교하고 또 아래 else if 에서는 node->key로 비교하는데요
설명에는 부모의 우선순위가 자식의 우선순위보다 높다고 되어있는데요 우선순위가 높다는건 key값도 크다는 건가요?
그럼 priority를 비교하든 key를 비교하든 결과가 같은 건가요?
11년 전