• c++实现二叉搜索树


    自己实现了一下二叉搜索树的数据结构。记录一下:

    #include <iostream>
    
    using namespace std;
    
    struct TreeNode{
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int value) { val=value; left=NULL; right=NULL; }
    };
    
    
    class SearchTree{
    
    public:
        SearchTree();
        ~SearchTree();
        void Destory(TreeNode *);
        void Insertnode(int);
        void Preorder(TreeNode *);
        void Inorder(TreeNode *);
        void Postorder(TreeNode *);
        void Predisplay();
        void Indisplay();
        void Postdisplay();
    private:
        TreeNode *root;
    
    };
    
    SearchTree::SearchTree()
    {
        root=NULL;
    }
    
    SearchTree::~SearchTree()
    {
        cout<<"析构二叉搜索树:"<<endl;
        Destory(root);
    }
    
    void SearchTree::Destory(TreeNode *node)
    {
        if(node!=NULL)
        {
            Destory(node->left);
            Destory(node->right);
            cout<<node->val<<" ";
            delete node;
        }
    }
    
    void SearchTree::Insertnode(int value)
    {
        if(root==NULL)
            root=new TreeNode(value);
        else
        {
            TreeNode *p,*pre;
            pre=p=root;
            while(p)
            {
                if(p->val==value)
                    return;
                else if(p->val>value)
                {
                    pre=p;
                    p=p->left;
                }
                else
                {
                    pre=p;
                    p=p->right;
                }
    
            }
            p=new TreeNode(value);
            if(pre->val>value)
                pre->left=p;
            else
                pre->right=p;
        }
    }
    
    
    void SearchTree::Predisplay()
    {
        Preorder(root);
    }
    
    void SearchTree::Preorder(TreeNode *root)
    {
        if(root)
        {
            cout<<root->val<<" ";
            Preorder(root->left);
            Preorder(root->right);
        }
    }
    
    void SearchTree::Indisplay()
    {
        Inorder(root);
    }
    
    void SearchTree::Inorder(TreeNode *root)
    {
        if(root)
        {
            Inorder(root->left);
            cout<<root->val<<" ";
            Inorder(root->right);
        }
    }
    
    void SearchTree::Postdisplay()
    {
        Postorder(root);
    }
    
    void SearchTree::Postorder(TreeNode *root)
    {
        if(root)
        {
            Postorder(root->left);
            Postorder(root->right);
            cout<<root->val<<" ";
        }
    }
    
    int main()
    {
        SearchTree t;
        int a[]={7,4,2,3,15,35,6,45,55,20,1,14};
        int n=sizeof(a)/sizeof(a[0]);
        cout<<"构造二叉搜索树:"<<endl;
        for(int i=0;i<n;++i)
        {
            cout<<a[i]<<" ";
            t.Insertnode(a[i]);
        }
        cout<<endl<<"先序遍历序列: "<<endl;
        t.Predisplay();
        cout<<endl<<"中序遍历序列: "<<endl;
        t.Indisplay();
        cout<<endl<<"后序遍历序列: "<<endl;
        t.Postdisplay();
        cout<<endl;
        return 0;
    }


  • 相关阅读:
    redis info命令中各个参数的含义
    mogndb 慢查询
    一分钟看懂Docker的网络模式和跨主机通信
    解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法
    dva学习---effects异步中通过select获取当前的state
    golang json数组拼接
    golang mongodb查找find demo
    React从入门到精通系列之(14)refs和DOM元素
    选择——ERP信息系统选型
    企业库存资产的帐实管理思考
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7244326.html
Copyright © 2020-2023  润新知