zoukankan      html  css  js  c++  java
  • 二叉排序树

    二叉排序树又叫二叉查找树。

    遵循三个原则:

    1、一棵树要么为空,要么

    2、左孩子节点小于根节点值,根节点值小于右孩子节点值

    3、子树也具备这个规则

    代码:

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    static int flag=0;
    typedef struct binst
    {
    	int data;
    	struct binst *lchild;
    	struct binst *rchild;
    }*BST;
    
    void createBST(BST &bst,int key)
    {
    	BST t,p,pre;
    	t=(BST)malloc(sizeof(struct binst));
    	if(!t)
    	{
    	   cout<<"allocate fail";
    	   return;
    	}
    	t->data=key;
    	t->lchild=NULL;
    	t->rchild=NULL;
    	if(bst==NULL)
    	{
    		bst=t;
    	}
    	else
    	{
    	p=bst;
    	while(p)
    	{
    		if(p->data==key)
    		{
    			free(t);
    			return;
    		}
    		else if(p->data<key)
    		{
    			pre=p;
    			p=p->rchild;
    		}
    		else
    		{
    			pre=p;
    			p=p->lchild;
    		}
    	}
    	if(pre->data<key)
    	{
    		pre->rchild=t;
    	}
    	else
    	{
    		pre->lchild=t;
    	}
    	}
    }
    
    void bstSearch(BST bst,int key)
    {
    	
    	if(bst)
    	{
    		if(bst->data==key)
    		{
    			flag=1;
    			cout<<"search success!"<<endl;
    			return;
    		}
    		else if(bst->data<key)
    		{
    			bstSearch(bst->rchild,key);
    		}
    		else
    		{
    			bstSearch(bst->lchild,key);
    		}
    	}
    	if(flag==0)
    	{
    		cout<<"search fail!"<<endl;
    	}
    }
    void preOrderSearch(BST bst)
    {
    	if(bst)
    	{
    		cout<<bst->data<<"  ";
    		preOrderSearch(bst->lchild);
    		preOrderSearch(bst->rchild);
    	}
    }
    
    int main()
    {
    	BST bst=NULL;
    	int arr[]={12,3,5,17,15,19,20};
    	int key;
    	cout<<"create the BST"<<endl;
    	for(int i=0;i<7;i++)
    	{
    		createBST(bst,arr[i]);
    	}
    	cout<<"output the bst:"<<endl;
    	preOrderSearch(bst);
    	cout<<endl;
    	cout<<"please input the key:";
    	cin>>key;
    	bstSearch(bst,key);
    	cout<<endl;
    	return 0;
    
    }
    

     运行截图:

  • 相关阅读:
    解决iex -S mix报错
    OTP服务器
    多进程
    字符串与二进制
    IphoneX适配正确姿势
    Babel 配置用法解析
    babel版本变化
    你好,babel
    XSS攻击 && CSRF攻击 基础理解
    小程序开发初体验~
  • 原文地址:https://www.cnblogs.com/xshang/p/3084275.html
Copyright © 2011-2022 走看看