#include
#include "Tree.h"
using namespace std;
Tree::Tree(int size){
m_iSize = size;
m_pTree = new int[m_iSize];
for (int i = 0; i < m_iSize; i++) {
m_pTree[i] = 0;
}
}
Tree::~Tree()
{
delete[]m_pTree;
m_pTree = NULL;
}
int *Tree::SearchNode(int nodeIndex) {
if (nodeIndex < 0 || nodeIndex > m_iSize)
return NULL;
if (m_pTree[nodeIndex] == 0)
return NULL;
return &m_pTree[nodeIndex];
}
bool Tree::AddNode(int nodeIndex, int direction, int *pNode) {
if (nodeIndex < 0 || nodeIndex >m_iSize)
return false;
if (m_pTree[nodeIndex] == 0)
return false;
if (direction == 0) {
if (nodeIndex * 2 + 1 < 0 || nodeIndex * 2 + 1 > m_iSize)
return false;
if (m_pTree[nodeIndex] == 0)
return false;
m_pTree[nodeIndex] = *pNode;
return true;
}
if (direction == 1) {
if (nodeIndex * 2 + 2 < 0 || nodeIndex * 2 + 2 > m_iSize)
return false;
if (m_pTree[nodeIndex] == 0)
return false;
m_pTree[nodeIndex] = *pNode;
return true;
}
}
bool Tree::DeleteNode(int nodeIndex, int *pNode) {
if (nodeIndex < 0 || nodeIndex > m_iSize)
return false;
if (m_pTree[nodeIndex] == 0)
return false;
*pNode = m_pTree[nodeIndex];
m_pTree[nodeIndex] = 0;
return true;
}
void Tree::TreeTraverse() {
for (int i = 0; i < m_iSize; i++)
cout << m_pTree[i] << ",";
}
怎么出现 addnode 并不是所有的控件都有返回值
缺少gdi32的错误
addnode函数有返回值,按照题目中的写法, 有可能不进入任何一个if分支,此时函数无法确定返回true还是false。
一个解决办法是检查代码,确保至少会进入其中一个if分支。
或者设置一个返回值,在所有if分支之后返回,这样可以保证即便所有if分支不满足,也有返回值。