//---------------------------------------------------------------------------- // Checks if a key is on the tree //---------------------------------------------------------------------------- bool CXMLTreeNode::ExistsKey (const char* _pszKey) { assert(_pszKey); CXMLTreeNode TreeFound = GetSubTree(_pszKey); return TreeFound.Exists(); }
void VNode::GetSubTree(VNode* node,VNodeVector& nodevector) //获取node节点的子树,保存在nodevector中 { nodevector.push_back(node); int num=node->m_vChildList.size(); for(int i=0;i<num;i++) { GetSubTree(node->GetChildNode(i),nodevector); } }
void VNode::Delete()//删除节点 { VNodeVector nodelist; GetSubTree(this,nodelist); int num=nodelist.size(); for(int i=0;i<num;i++) { delete nodelist[i]; //直接删除节点??? } nodelist.clear(); m_vChildList.clear(); }
//---------------------------------------------------------------------------- // Operator that returns a tree node //---------------------------------------------------------------------------- CXMLTreeNode CXMLTreeNode::operator[] (const char* _pszKey) const { assert(_pszKey && m_pNode); CXMLTreeNode TreeFound; if (_pszKey && m_pNode) { TreeFound = GetSubTree(_pszKey); } return TreeFound; }