当前位置: 首页>>代码示例>>C#>>正文


C# TreeNode.Validate方法代码示例

本文整理汇总了C#中TreeNode.Validate方法的典型用法代码示例。如果您正苦于以下问题:C# TreeNode.Validate方法的具体用法?C# TreeNode.Validate怎么用?C# TreeNode.Validate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TreeNode的用法示例。


在下文中一共展示了TreeNode.Validate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: UnsafeInsert

        // Добавление элемента "не безопасное", так как функция расчитывает на то, что элемент действительно не существует в дереве
        // Мне такой реализации будет достаточно.
        private static void UnsafeInsert(ref TreeNode treeRoot, int value, TreeNode leftThread = null, TreeNode rightThread = null)
        {
            // Используется для отладки
            if (!treeRoot.Validate())
            {
            }

            if (value > treeRoot.Value)
            {
                if (IsRightThreaded(treeRoot))
                {
                    TreeNode node = new TreeNode()
                    {
                        Left = treeRoot,
                        Right = treeRoot.Right,
                        Size = 1,
                        Value = value
                    };

                    treeRoot.Right = node;
                    treeRoot.Size++; // Допускается увеличивать размер только, если заренее было проверено, что такого элемента не было добавлено

                    return;
                }
                else
                {
                    //TreeNode rightNode = treeRoot.Right;
                    //TreeNode leftNode = treeRoot.Left;

                    //if (value > rightNode.Value)
                    //{
                    //    if (!IsRightThreaded(rightNode) && (IsLeftThreaded(treeRoot) || (rightNode.Right.Size + 1) > leftNode.Size))
                    //        LeftRotate(ref treeRoot);
                    //}
                    //else if (value < rightNode.Value)
                    //{
                    //    if (!IsLeftThreaded(rightNode) && (value > rightNode.Left.Value) && (IsLeftThreaded(treeRoot) || (rightNode.Left.Size + 1) > leftNode.Size))
                    //    {
                    //        RightRotate(ref treeRoot.Right);
                    //        LeftRotate(ref treeRoot);
                    //    }
                    //}

                    leftThread = treeRoot;
                    treeRoot.Size++; // Допускается увеличивать размер только, если заренее было проверено, что такого элемента не было добавлено

                    UnsafeInsert(ref treeRoot.Right, value, leftThread, rightThread);
                }
            }
            else if (value < treeRoot.Value)
            {
                if (IsLeftThreaded(treeRoot))
                {
                    TreeNode node = new TreeNode()
                    {
                        Left = treeRoot.Left,
                        Right = treeRoot,
                        Size = 1,
                        Value = value
                    };

                    treeRoot.Left = node;
                    treeRoot.Size++; // Допускается увеличивать размер только, если заренее было проверено, что такого элемента не было добавлено

                    return;
                }
                else
                {
                    //TreeNode rightNode = treeRoot.Right;
                    //TreeNode leftNode = treeRoot.Left;

                    //if (value < leftNode.Value)
                    //{
                    //    if (!IsLeftThreaded(leftNode) && (IsRightThreaded(treeRoot) || (leftNode.Left.Size + 1) > rightNode.Size))
                    //        RightRotate(ref treeRoot);
                    //}
                    //else if (value > leftNode.Value)
                    //{
                    //    if (!IsRightThreaded(leftNode) && (value < leftNode.Right.Value) && (IsRightThreaded(treeRoot) || (leftNode.Right.Size + 1) > rightNode.Size))
                    //    {
                    //        LeftRotate(ref treeRoot.Left);
                    //        RightRotate(ref treeRoot);
                    //    }
                    //}

                    rightThread = treeRoot;
                    treeRoot.Size++; // Допускается увеличивать размер только, если заренее было проверено, что такого элемента не было добавлено

                    UnsafeInsert(ref treeRoot.Left, value, leftThread, rightThread);
                }
            }
        }
开发者ID:happiesanger,项目名称:LinksPlatform,代码行数:94,代码来源:TreeStructureExperiments.cs


注:本文中的TreeNode.Validate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。