




























测试代码:
void CTestTreeDlg::OnBuild()
{
TreeStruct * pTemp;
pTemp = new TreeStruct();
pTemp->m_strProperty = "Root";
pTemp->AddSon("A")->DelSon()->AddBrother("B");
pTemp->AddSon("CCC");
pTemp->AddBrother("DDD");
//pTemp->DelSon();
buildTree(pTemp,NULL);
}
void CTestTreeDlg::buildTree(TreeStruct *pBase,HTREEITEM hParent1)
{
HTREEITEM hParent;
hParent= m_Tree.InsertItem(pBase->m_strProperty,0,0,hParent1);
if(pBase->m_pSon)
{
buildTree(pBase->m_pSon,hParent);
}
if(pBase->m_pNextBrother )
{
buildTree(pBase->m_pNextBrother,hParent1);
}
}
数据结构的头文件:
class TreeStruct
{
public:
TreeStruct();
virtual ~TreeStruct();
public:
CString m_strProperty;
TreeStruct *m_pNextBrother;
TreeStruct *m_pSon;
TreeStruct * m_pParent;
public:
TreeStruct * DelSon();
TreeStruct * AddSon(CString strName);
TreeStruct * AddBrother(CString strName);
TreeStruct * GetRoot();
};
数据结构的实现文件:
TreeStruct * TreeStruct::DelSon()
{
TreeStruct * pTemp = NULL;
pTemp = m_pSon;
TreeStruct *pTemp1 = NULL;
TreeStruct *pTemp2 = NULL;
if(pTemp)
{
pTemp1 = pTemp->m_pSon;
if(pTemp1)
return pTemp1->DelSon();
pTemp2 = pTemp->m_pNextBrother;
if(pTemp2)
pTemp2->DelSon();
delete pTemp;
pTemp = NULL;
m_pSon = NULL;
}
return this;
}
TreeStruct * TreeStruct::AddSon(CString strName)
{
if(m_pSon)
{
return m_pSon->AddBrother(strName);
}
else
{
TreeStruct * pTemp = new TreeStruct();
pTemp->m_strProperty = strName;
pTemp->m_pParent = this;
m_pSon = pTemp;
return m_pSon;
}
}
TreeStruct * TreeStruct::AddBrother(CString strName)
{
if(m_pNextBrother == NULL)
{
m_pNextBrother = new TreeStruct();
m_pNextBrother->m_strProperty = strName;
m_pNextBrother->m_pParent = this;
return m_pNextBrother;
}
else
{
return m_pNextBrother->AddBrother(strName);
}
}
TreeStruct *TreeStruct::GetRoot()
{
TreeStruct *pNowData = NULL;
TreeStruct *pResult = NULL;
pNowData = this;
while(pNowData)
{
pResult = pNowData->m_pParent;
pNowData = pNowData->m_pParent;
}
return pResult;
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。