Ejemplo n.º 1
0
        public BinTreeNodeExt BuildAVLTree(long[] elements, int count)
        {
            BinTreeNodeExt lastNode = null;

            if (count == 1)
            {
                lastNode = new BinTreeNodeExt(elements[0]);
            }

            return(lastNode);
        }
Ejemplo n.º 2
0
        public BinTreeNodeExt GetCartesianTree(long[] elements, int count)
        {
            // last node is not root
            BinTreeNodeExt lastNode = null;

            if (count == 1)
            {
                lastNode = new BinTreeNodeExt(elements[0]);
            }
            else if (count > 1 && count < elements.Length)
            {
                long           value        = elements[count];
                BinTreeNodeExt prevTree     = GetCartesianTree(elements, count - 1);
                BinTreeNodeExt prevprevTree = null;
                BinTreeNodeExt newNode      = new BinTreeNodeExt(elements[count]);

                // add the new node to tree
                while (null != prevTree && prevTree.Info > value)
                {
                    prevprevTree = prevTree;
                    prevTree     = prevTree.Parent;
                }

                if (prevTree != null)
                {
                    newNode.Right  = prevTree.Right;
                    prevTree.Right = newNode;
                    newNode.Parent = prevTree;
                }
                else
                {
                    // new node is the new root, and the rest go to left
                    newNode.Left = prevprevTree;
                    if (null != prevprevTree)
                    {
                        prevprevTree.Parent = newNode;
                    }
                }

                if (null != newNode.Right)
                {
                    ((BinTreeNodeExt)newNode.Right).Parent = newNode;
                }
                if (null != newNode.Left)
                {
                    ((BinTreeNodeExt)newNode.Left).Parent = newNode;
                }
            }

            return(lastNode);
        }
Ejemplo n.º 3
0
 public BinTreeNodeExt(long info, long left, long right, BinTreeNodeExt parent) : base(info, left, right)
 {
     Parent = parent;
 }
Ejemplo n.º 4
0
 public BinTreeNodeExt(long info) : base(info)
 {
     Parent = null;
 }