示例#1
0
        public Tree Find(Tree template)
        {
            Tree current = this;

            while (true)
            {
                int comparisonResult = current.Compare(template);
                if (comparisonResult == 0)
                {
                    return(current);
                }
                if (comparisonResult < 0)
                {
                    current = ((Tree)current._subsequent);
                }
                else
                {
                    current = ((Tree)current._preceding);
                }
                if (current == null)
                {
                    return(null);
                }
            }
        }
示例#2
0
        public static Tree FindSmaller(Tree a_in, Tree a_node)
        {
            if (a_in == null)
            {
                return(null);
            }
            int cmp = a_in.Compare(a_node);

            if (cmp < 0)
            {
                Tree node = FindSmaller(((Tree)a_in._subsequent), a_node);
                if (node != null)
                {
                    return(node);
                }
                return(a_in);
            }
            return(FindSmaller(((Tree)a_in._preceding), a_node));
        }
示例#3
0
文件: Tree.cs 项目: pondyond/db4o
        public static Tree FindSmaller(Tree a_in, Tree a_node)
        {
            if (a_in == null)
            {
                return(null);
            }
            var cmp = a_in.Compare(a_node);

            if (cmp < 0)
            {
                var node = FindSmaller(a_in._subsequent, a_node);
                if (node != null)
                {
                    return(node);
                }
                return(a_in);
            }
            return(FindSmaller(a_in._preceding, a_node));
        }
示例#4
0
        public static Tree FindGreaterOrEqual(Tree a_in, Tree a_finder)
        {
            if (a_in == null)
            {
                return(null);
            }
            int cmp = a_in.Compare(a_finder);

            if (cmp == 0)
            {
                return(a_in);
            }
            // the highest node in the hierarchy !!!
            if (cmp > 0)
            {
                Tree node = FindGreaterOrEqual(((Tree)a_in._preceding), a_finder);
                if (node != null)
                {
                    return(node);
                }
                return(a_in);
            }
            return(FindGreaterOrEqual(((Tree)a_in._subsequent), a_finder));
        }
示例#5
0
文件: Tree.cs 项目: erdincay/db4o
		public static Tree FindSmaller(Tree a_in, Tree a_node)
		{
			if (a_in == null)
			{
				return null;
			}
			int cmp = a_in.Compare(a_node);
			if (cmp < 0)
			{
				Tree node = FindSmaller(((Tree)a_in._subsequent), a_node);
				if (node != null)
				{
					return node;
				}
				return a_in;
			}
			return FindSmaller(((Tree)a_in._preceding), a_node);
		}
示例#6
0
文件: Tree.cs 项目: erdincay/db4o
		public static Tree FindGreaterOrEqual(Tree a_in, Tree a_finder)
		{
			if (a_in == null)
			{
				return null;
			}
			int cmp = a_in.Compare(a_finder);
			if (cmp == 0)
			{
				return a_in;
			}
			// the highest node in the hierarchy !!!
			if (cmp > 0)
			{
				Tree node = FindGreaterOrEqual(((Tree)a_in._preceding), a_finder);
				if (node != null)
				{
					return node;
				}
				return a_in;
			}
			return FindGreaterOrEqual(((Tree)a_in._subsequent), a_finder);
		}
示例#7
0
文件: Tree.cs 项目: masroore/db4o
 public static Tree FindSmaller(Tree a_in, Tree a_node)
 {
     if (a_in == null)
     {
         return null;
     }
     var cmp = a_in.Compare(a_node);
     if (cmp < 0)
     {
         var node = FindSmaller(a_in._subsequent, a_node);
         if (node != null)
         {
             return node;
         }
         return a_in;
     }
     return FindSmaller(a_in._preceding, a_node);
 }