コード例 #1
0
ファイル: IntervalTree.cs プロジェクト: bntre/cs-rationals
        public void IterateIntervals(HandleInterval handle, Interval i = null)
        {
            if (i == null)
            {
                i = root;
            }
            Item i0 = GetIntervalLeftItem(i);
            Item i1 = GetIntervalRightItem(i);

            IterateIntervals(i, i0, i1, handle);
        }
コード例 #2
0
ファイル: IntervalTree.cs プロジェクト: bntre/cs-rationals
        protected void IterateIntervals(Interval i, Item i0, Item i1, HandleInterval handle)
        {
            if (i == null)
            {
                return;
            }
            bool goDeeper = handle(i0, i1);

            if (!goDeeper)
            {
                return;
            }
            if (i.left == null)
            {
                return;                 // not forked
            }
            IterateIntervals(i.left, i0, i.item, handle);
            IterateIntervals(i.right, i.item, i1, handle);
        }