dennis_zane 发表于 2013-1-27 06:14:20

C#实现二叉查找树

二叉查找树(binary search tree)
1)概念:对于树中的每个节点n,其左子节点中保存的所有数值都小于n保存的数值,右子节点保存的数值都大于n保存的数值。
2)二叉查找树可以实现更为优越的查找性能,主要实现方式有数组和链表结构,相比较而言,链表实现更为容易,因为数组实现删除和添加功能需要移动数组元素(如填补删除空位等)

今天下午在打印问题搞定后用C#实现了一下,比java版本比较有趣的使用C#的delegate来代替遍历二叉树时的visit方法,这样一来可以在遍历时对节点进行你所想要的任何操作。我们知道C#的delegate是类型化的函数指针,而C++的函数指针可以模仿动态语言的闭包或者匿名函数。这里也有这样的味道。

代码如下,只实现了整数型的,节点定义:
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!---->  public  class BSTIntNode
    {
        public int value;
        public BSTIntNode left;
        public BSTIntNode right;

        public BSTIntNode(int value, BSTIntNode left, BSTIntNode right)
        {
            this.value = value;
            this.left = left;
            this.right = right;
        }

        public BSTIntNode(int value)
        {
            this.value = value;
            this.left = null;
            this.right = null;
        }
    }
页: [1]
查看完整版本: C#实现二叉查找树