示例#1
0
        public void LockUnlock(int val, bool lockUnlock, LockTree root)
        {
            if (root == null)
            {
                return;
            }
            LockTree tree = root.FindNodeBST(val);

            if (tree != null)
            {
                if (lockUnlock)
                {
                    if (tree.Lock())
                    {
                        Console.WriteLine("Node {0} locked!", val);
                    }
                    else
                    {
                        Console.WriteLine("Node {0} could not be locked!", val);
                    }
                }
                else
                {
                    if (tree.Unlock())
                    {
                        Console.WriteLine("Node {0} unlocked!", val);
                    }
                    else
                    {
                        Console.WriteLine("Node {0} could not be unlocked!", val);
                    }
                }
            }
        }
示例#2
0
        public LockTree BuildTree()
        {
            LockTree tree = new LockTree(10, null);

            tree.left              = new LockTree(5, tree);
            tree.right             = new LockTree(15, tree);
            tree.left.left         = new LockTree(2, tree.left);
            tree.left.right        = new LockTree(8, tree.left);
            tree.right.left        = new LockTree(12, tree.right);
            tree.right.right       = new LockTree(20, tree.right);
            tree.right.right.left  = new LockTree(18, tree.right.right);
            tree.right.right.right = new LockTree(22, tree.right.right);

            return(tree);
        }
示例#3
0
 public LockTree(int val, LockTree parent)
 {
     this.val    = val;
     this.parent = parent;
 }