二叉树可以使用数组简单的实现,其原理就是左右子节点和父节点的关系, 2*index + 1 为左节点,2*index + 2 为右节点
class Tree
{
public:
Tree(int size,int *pRoot);
~ Tree();
int *SearchNode(int nodeIndex);
bool AddNdode(int nodeIndex, int direction, int *pNode);
bool DeleteNode(int nodeIndex, int *pNode);
void TreeTraverse();
private:
int *m_pTree;
int m_Size;
};
#include <iostream>
#include "Tree.h"
using namespace std;
Tree::Tree(int size, int *pRoot){
m_Size = size;
m_pTree = new int[size];
for(int i = 0;i < size; i++)
m_pTree[i] = 0;
m_pTree[0] = *pRoot;
}
Tree::~Tree(){
delete []m_pTree;
m_pTree = NULL;
}
int *Tree::SearchNode(int nodeIndex){
if(nodeIndex<0 || nodeIndex >= m_Size)
return NULL;
if(m_pTree[nodeIndex] == 0)
return NULL;
return &m_pTree[nodeIndex];
}
bool Tree::AddNdode(int nodeIndex, int direction, int *pNode){