0

所以我需要一个只删除树的最后一个节点的函数。我在网上找到的所有内容都说使用向量而不是数组,但我的任务说使用数组。所以我想使用两个数组只是不知道如何实现它。请帮助这是我到目前为止的代码,我认为我需要的只是删除功能。提前致谢

#include <iostream>
#include <string>
using namespace std;
template <class item>
class Tree {
public:
  // typedef int value_type;
   typedef std::size_t size_type;
   static const size_type CAPACITY = 30;
   Tree() { used = 0; }
   void leftchild(int index)
   {
       if((2*index)+1 > used)
       {
            cout <<"No child" << endl;
       }
       else
       cout << "\nLeft Child of Index " << index << ": " << data[(2*index)+1] << endl;
   }
   void rightchild (int index)
   {
       if((2*index)+2 >= used)
       {
           cout <<"No child" << endl;
       }
       else
       cout << "\nRight Child of Index " << index << data[(2*index)+2] << endl;
   }
   void parent (int index)
   {
      if(((index-1)/2) < 0)
      {
          cout << "No Parent" << endl;
      }
      else
      cout << "\nParent: " << data[(index-1)/2] <<endl;
   }
   void insert(item entry)
   {
       data[used] = entry;
       ++used;
   }
   void remove()
   {

   }
   void display()
   {
       for(int i = 0; i < used; i++)
        {
            cout << data[i];
        }
    }


private:
    item data[CAPACITY];
    size_type used;
};

 int main()
 {
Tree<char> test;
test.insert('A'); //Index [0]
test.insert('L'); //Index [1]
test.insert('G'); //Index [2]
test.insert('O'); //Index [3]
test.insert('R'); //Index [4]
test.insert('I'); //Index [5]
test.insert('T'); //Index [6]
test.insert('H'); //Index [7]
test.insert('M'); //Index [8]
test.insert('S'); //Index [9]
test.display();
//test.remove();
test.display();
test.leftchild(4);
system("pause");
return 0;
}
4

1 回答 1

2

简单地减少使用 1:

void remove()
{
    if (used > 0) 
        used--;
}

还要修复你的 leftChild():

if((2*index)+1 >= used)
于 2013-04-19T22:36:01.877 回答