您的位置:首页 > 编程语言 > C#

二叉查找树

2013-05-02 12:20 190 查看
1.基本概念

二叉查找树也叫二叉排序树,二叉查找树若不是一颗空树,则其具有以下性质

1)若其左子树不为空,则左子树上的结点值均小于该节点

2)若其右子树不为空,则右子树上的结点值均大于该结点

3)左右子树均为二叉查找树

2.存储结构

二叉树的存储结构为二叉链表

3.查找算法

1)步骤:

若结点的关键字值等于查找的关键字,成功。

否则,若小于结点的关键字值,递归查找左子树。

若大于结点的关键字值,递归查找右子树。

若子树为空,查找不成功。

2)实现:

/// <summary>

    /// 二叉查找树/二叉排序树

    /// 排序二叉树的定义:它或者是一个空树,或者是具有以下性质的二叉树

    /// 1.如果它的左子树不为空,则上面的值均小于该结点的值

    /// 2.如果它的右子树不为空,则上面的值均大于该结点的值

    /// 3.该结点的左子树和右子树均为二叉排序树

    /// </summary>

    public class BinarySortTree<T>

    {

        public void BinarySearch(Node<T> node,T value)

        { 

            //该树为一颗空树

            if (node == null)

            {

                Console.WriteLine("未找到该节点");

                return;

            }

            //如果头结点的值=该值

            if (node.value.Equals(value))

            {

                Console.WriteLine("找到该结点:" + node.value.ToString());

            }

            else if (Comparer<T>.Default.Compare(node.value, value) > 0)

            {

                //该值小于结点值,遍历左子树

                BinarySearch(node.leftChild, value);

            }

            else

            {

                //该值大于结点值,遍历右子树

                BinarySearch(node.rightChild, value);

            }

        }

    }

    /// <summary>

    /// 存放二叉树的结点

    /// </summary>

    /// <typeparam name="T"></typeparam>

    public class Node<T>

    {

        public T value { get; set; }

        public Node<T> leftChild { get; set; }

        public Node<T> rightChild { get; set; }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息