public object insert(object T) { int res = 1; TGlsBTreeNode p = root; TGlsBTreeNode n = root.rchild; while (n != null) { p = n; res = cmp(T, p.Val); if (res <= 0) { n = p.lchild; } else { n = p.rchild; } } win = new TGlsBTreeNode(T); if (res <= 0) { p.lchild = win; p.Prev.insert(win); } else { p.rchild = win; p.insert(win); } return(T); }
public TGlsBTreeNode(object T) { base.TGlsNode1(); _val = T; _lchild = null; _rchild = null; bIsRoot = true; }
/* public bool isEmpty(); * public void* find(void* T); * public void* findMin(); * public void* findMax();*/ public void inorder(acp acpp) { TGlsBTreeNode n = (TGlsBTreeNode)(root.Next); while (n != root) { if (!(acpp(n.Val))) { break; } n = (TGlsBTreeNode)(n.Next); } }
/* TGlsBTreeNode _findMin(TGlsBTreeNode n); * TGlsBTreeNode _findMax(TGlsBTreeNode n);*/ public TGlsBinaryTree(TCmp ACmp) { cmp = ACmp; win = root = new TGlsBTreeNode(null); }