From: Kim Nguyễn Date: Thu, 29 Mar 2012 11:59:27 +0000 (+0200) Subject: Optimize isFirstChild X-Git-Url: http://git.nguyen.vg/gitweb/?p=SXSI%2FXMLTree.git;a=commitdiff_plain;h=883743aa4d19900d312bd186df810a68ecd71cf8 Optimize isFirstChild --- diff --git a/XMLTree.h b/XMLTree.h index 351db20..74a71e6 100644 --- a/XMLTree.h +++ b/XMLTree.h @@ -294,10 +294,15 @@ public: bool IsChild(treeNode x, treeNode y); /** IsFirstChild(x): returns whether node x is the first child of its parent. */ - /* OCAML */ + /* SLOW bool IsFirstChild(treeNode x) { return ((x != NULLT)&&(x==Root() || bp_prev_sibling(Par,x) == (treeNode)-1)); }; + */ + + bool IsFirstChild(treeNode x) { + return (x <= Root()) || (bp_inspect(Par,x-1) == OP); + } /** NumChildren(x): number of children of node x. Constant time with the * data structure of Sadakane. */