From 883743aa4d19900d312bd186df810a68ecd71cf8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kim=20Nguy=E1=BB=85n?= Date: Thu, 29 Mar 2012 13:59:27 +0200 Subject: [PATCH] Optimize isFirstChild --- XMLTree.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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. */ -- 2.17.1