从堆中分配内存并初始化每个数据为0可以这样:m_pTree = new int[size](); 这是C++11的新特性!~
2016-11-07
已采纳回答 / king925
delete的操作,实际上可以看做是对树的对象中的元素进行的操作,即是对node的操作。在tree类中定义的操作,应该是对整个类的操作,如果将delete操作设为tree的函数,那么还需要通过类的对象再调用这个对象的元素,相当于多增加了一步操作。通过在node中实现,可以简化步骤,便于理解。
2016-11-05
如果删除根节点要把后面的子节点也删掉吧,使用递归:int leftPos = nodeIndex*2 + 1;
int rightPos = nodeIndex*2 + 2;
int temp = 0;
if(leftPos <= m_iSize && m_pTree[leftPos] != 0){
DeleteNode(leftPos,&temp);
}
if(rightPos <= m_iSize && m_pTree[rightPos] != 0){
DeleteNode(rightPos,&temp);
}
int rightPos = nodeIndex*2 + 2;
int temp = 0;
if(leftPos <= m_iSize && m_pTree[leftPos] != 0){
DeleteNode(leftPos,&temp);
}
if(rightPos <= m_iSize && m_pTree[rightPos] != 0){
DeleteNode(rightPos,&temp);
}
2016-10-15