TreeNode *bTree::TreeExistItem(HTTPCSTR lpTreeItemName) { TreeNode *x; if (root == NULL) { return (NULL); } /* search the tree */ x = root; while (x != NULL) { int ret = _tcscmp(lpTreeItemName,x->GetTreeNodeName()); if (ret == 0) { return (x); } else { if (ret < 0) { x = x->GetTreeNodeLeft(); } else { x = x->GetTreeNodeRight(); } } } return (NULL); }
// ----------------------------------------------------------------------------- TreeNode* bTree::TreeInsert(HTTPCSTR str, TreeNode *ParentItem) { if (ParentItem == NULL) { if (root == NULL) { TreeNode *newnode = new TreeNode(str, NULL); newnode->SetTreeNodeParentTree(this); root = newnode; count++; return (root); } else { TreeNode *y = NULL; TreeNode *x = root; while (x != NULL) { if (_tcscmp(x->GetTreeNodeName(), str) == 0) { /* already Exists */ return (x); } y = x; if (_tcscmp(str, x->GetTreeNodeName()) < 0) x = x->GetTreeNodeLeft(); else x = x->GetTreeNodeRight(); } /* str doesn't yet exist in tree - add it in */ TreeNode *newnode = new TreeNode(str, y); newnode->SetTreeNodeParentTree(this); if (_tcscmp(str, y->GetTreeNodeName()) < 0) { y->SetTreeNodeLeft(newnode); } else { y->SetTreeNodeRight(newnode); } this->count++; /* Add an additional element to the tree counter */ return (newnode); } } else { TreeNode*newnode = ParentItem->GetTreeNodeChildTree()->TreeInsert(str, NULL); return (newnode); } }