public IEnumerable <BTNode> Traverse() { @lock.EnterReadLock(); try { return(TreeTraversalStrategy.Traverse(this)); } finally { @lock.ExitReadLock(); } }
public BTNode Find(string nodeName) { @lock.EnterReadLock(); try { return(TreeTraversalStrategy.Traverse(this). Where(treeNode => treeNode.Name == nodeName). Single()); } catch (InvalidOperationException) { return(null); } finally { @lock.ExitReadLock(); } }