示例#1
0
文件: Page.cs 项目: erlGreen/BTree
        public void SetChildrensParentPageNumber(DiskFunctionality df)
        {
            TreeItem treeItem1;
            TreeItem treeItem2;

            List <TreeItem> .Enumerator enumerator = itemList.GetEnumerator();
            enumerator.MoveNext();
            treeItem1 = enumerator.Current;
            if (treeItem1.leftChildNumber == -1)
            {
                return;
            }
            Page child = df.ReadPage(treeItem1.leftChildNumber);

            child.parentPageNumber = currentPageNumber;
            df.SavePage(child);
            while (enumerator.MoveNext())
            {
                treeItem2 = enumerator.Current;
                child     = df.ReadPage(treeItem2.leftChildNumber);
                child.parentPageNumber = currentPageNumber;
                df.SavePage(child);
                treeItem1 = treeItem2;
            }
            child = df.ReadPage(treeItem1.rightChildNumber);
            child.parentPageNumber = currentPageNumber;
            df.SavePage(child);
        }
示例#2
0
文件: Page.cs 项目: erlGreen/BTree
        public void SetParentsChildrenPageNumber(int lastPageNumber, DiskFunctionality df)
        {
            if (parentPageNumber == -1)
            {
                return;
            }
            Page ancestorPage = df.ReadPage(parentPageNumber);

            List <TreeItem> .Enumerator e = ancestorPage.itemList.GetEnumerator();
            TreeItem iterator;

            while (e.MoveNext())
            {
                iterator = e.Current;
                if (iterator.leftChildNumber == lastPageNumber)
                {
                    iterator.leftChildNumber = currentPageNumber;
                }
                if (iterator.rightChildNumber == lastPageNumber)
                {
                    iterator.rightChildNumber = currentPageNumber;
                }
            }
            df.SavePage(ancestorPage);
        }