惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 聂微东
MyScale Blog
MyScale Blog
H
Help Net Security
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Proofpoint News Feed
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏

博客园 - 大天使泰瑞尔

通过反射机制控制前台的数据项的显示和隐藏 由partition看窗口函数 IE 6下CSS浮动样式的问题 转载一篇拼SQL字符串的语句 ASP.NET 2.0 中控件的简单异步回调 新手基础知识专用 今天终于学会了从客户端调用Web Service 学会了ASP.NET 2.0中的数据批量更新 - 大天使泰瑞尔 - 博客园 数据结构学习(6):队列 数据结构学习(5):链表 数据结构学习(4):栈 数据结构学习(3):堆化优先队列 数据结构学习(2):汉诺塔问题 冒泡算法的三种JavaScript表示 YUI学习(1):ToolTip的用法 XML学习失误系列(2):分清节点性质,使用nodeValue JavaScript&DHTML特效学习(1):MSN提示框 YUI的Drap&Drop对IE7不支持 Gmail邮箱可以直接注册了
数据结构学习(1):搜索二叉树
大天使泰瑞尔 · 2006-12-14 · via 博客园 - 大天使泰瑞尔

using System;
using System.IO;

namespace BinaryTreeSearch
{
    
/// <summary>
    
/// Class1 的摘要说明。
    
/// </summary>

    class BinaryTreeSearch
    
{
        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            
//
            
// TODO: 在此处添加代码以启动应用程序
            
//
        }

        
public void init()
        
{
            
//构造一个空的二叉搜索树开始
            BinarySearchTree T=new BinarySearchTree();//T初始为空

        }

    }

    
class BinarySearchTree
    
{
        
//BinarySearchTree中有一个存储指向二叉搜索树根结点指针(或存有证明为空树
        
//的null)的私有数据域
        private TreeNode rootNode;
        
//BinarySearchTree的各种方法
        
//Insert方法所用的辅助方法
        private TreeNode insertKey(TreeNode T,ComparisonKey K)
        
{
            
if(T==null)
            
{
                TreeNode N
=new TreeNode();//构建一个新的TreeNode
                N.key=K;
                
return N;
            }

            
else
            
{
                
if(K.compareTo(T.key)<0)
                
{
                    T.llink
=insertKey(T.llink,K);
                    
return T;
                }

                
else
                
{
                    T.rlink
=insertKey(T.rlink,K);
                    
return T;
                }

            }

        }
//end insertKey


        
void insert(string K)
        
{
            rootNode
=insertKey(rootNode,new StringKey(K));
        }
//end insert

        TreeNode find(ComparisonKey K)
        
{
            TreeNode T
=rootNode;
            
int result;

            
while(T!=null)
            
{
                
if((result=K.compareTo(T.key))<0)
                
{
                    T
=T.llink;
                }

                
else if(result==0)
                
{
                    
return T;
                }

                
else
                
{
                    T
=T.rlink;
                }
//end if
            }

            
return T;//如果搜索失败 返回null
        }


        TreeNode find(String K)
        
{
            
return find(new StringKey(K));
        }

    }

    
class TreeNode
    
{
        ComparisonKey key;
        TreeNode llink;
        TreeNode rlink;
    }

    
public interface ComparisonKey
    
{
        
//        如果K1和K2均为ComparisonKey,那么K1.compareTo(k2)就会有三个值0,1,-1,
        
//        就是K1==K2,K1>K2,K1<K2顺序是compareTo方法定义的优先级别顺序
        int compareTo(ComparisonKey value);
        
//将ComparisonKey转换成可以打印的字符串
        string toOurString();
    }


    
public class PQItem:ComparisonKey
    
{

        
private int key;//key数据包括给出元素优先级别的整数关键字
        public PQItem(int value)
        
{
            key
=value;
        }

        
ComparisonKey 成员

    }


}