void BinarySearchTree::insert(int d)
{
tree_node* t = new tree_node;
tree_node* parent;
t->data = d;
t->left = NULL;
t->right = NULL;
parent = NULL;
// is this a new tree?
if(isEmpty()) root = t;
else
{
//Note: ALL insertions are as leaf nodes
tree_node* curr;
curr = root;
// Find the Node's parent
while(curr)
{
parent = curr;
if(t->data > curr->data) curr = curr->right;
else curr = curr->left;
}
if(t->data < parent->data)
parent->left = t;
else
parent->right = t;
}
}
질문 : 나는 tree_node의 *의 t에 대한 메모리를 할당해야 할 이유이진 트리의 C++ 기본
; 신규 사용 (해당하지 않음) tree_node * parent;?
정확히 tree_node *는 메모리에서 어떻게 보이며 무엇을합니까?
누가 내게 설명 할 수 있습니까? -> 연산자와 어떻게 작동합니까?
tree_node * t는 삽입 될 새 노드로 사용되는 반면 parent는 처리 중에 부모 노드를 저장하는 데 사용되는 임시 저장 변수입니다. '-> '연산자는 접근 자이므로 객체 내에 저장된 데이터를 얻을 수 있습니다. tree_node 실제로 무엇입니까? 아마도이 트리 구현을 위해 특별히 만들어진 사용자 지정 데이터 형식 일 것입니다. 당신은 그것을 위해 당신의 근원을 조사해야 할 것입니다. – TheZ
'->'는 다른 언어의'.'와 같은 것을 의미합니다; 객체의 멤버를 참조합니다. 그래서'parent-> right'는'parent' 객체의'right' 멤버를 의미합니다. –
@RobertHarvey 음 ... parent는 객체가 아니라 포인터입니다. –