www.pudn.com > ParseXML.rar > Tree.cpp
#include "StdAfx.h" #include "tree.h" #include///////////////////////////////////////////////////////////////////// // class CNode CNode::CNode(void) { m_pLeftNode = NULL; //孩子节点 m_pRightNode = NULL; //兄弟节点 m_pParentNode = NULL; //双亲节点 } CNode::~CNode(void) { } ///////////////////////////////////////////////////////////////////// // class CTree CTree::CTree(void) { m_RootNode.m_pLeftNode = NULL; m_RootNode.m_pParentNode = NULL; m_RootNode.m_pRightNode = NULL; } CTree::~CTree(void) { } void CTree::FreeNode(CNode* pNode) { if(pNode != NULL) { FreeNode(pNode->m_pLeftNode); FreeNode(pNode->m_pRightNode); delete pNode; } } void CTree::FreeTree() { FreeNode(m_RootNode.m_pLeftNode); } CNode* CTree::GetRootNode() { return &m_RootNode; } void CTree::InsertChildNode(CNode* pNode, CNode* pParent) { if(pNode != NULL && pParent != NULL) { if(pParent->m_pLeftNode != NULL) { CNode* p = pParent->m_pLeftNode; while(p->m_pRightNode != NULL) p = p->m_pRightNode; p->m_pRightNode = pNode; pNode->m_pParentNode = pParent; } else { pParent->m_pLeftNode = pNode; pNode->m_pParentNode = pParent; } } }