Разве этот код для вставки в дерево не работает для пустых деревьев?
Я читаю jumping into c++ и в нем есть этот код, который сделан для вставки в дерево:
node* insert (node *p_tree, int key) { // base case--we have reached an empty tree and need to insert our new // node here if ( p_tree == NULL ) { node* p_new_tree = new node; p_new_tree->p_left = NULL; p_new_tree->p_right = NULL; p_new_tree->key_value = key; return p_new_tree; } // decide whether to insert into the left subtree of the right subtree // depending on the value of the node if( key < p_tree->key_value ) { // build a new tree based on p_tree->left by adding the key. Then // replace the existing p_tree->left pointer with a pointer // to the new tree. We need to set the p_tree->p_left pointer // in case p_tree->left is NULL. (If it is not NULL, // p_tree->p_left won't actually change but it doesn’t hurt to // set it.) p_tree->p_left = insert( p_tree->p_left, key ); } else { // Insertion into the right is exactly symmetric to insertion // into the left p_tree->p_right = insert( p_tree->p_right, key ); } return p_tree;
Мой вопрос таков: если у вас есть пустое дерево, не будет ли это работать для пустого дерева? Итак, если у вас есть только один элемент, указывающий на null, и вы пытаетесь вставить его, вы просто создадите переменную с именем p_new_tree, верно?
Что я уже пробовал:
ничего...............................................