二叉查找树

Code:
  1. //有待完善~~~大家有什么意见可以说说啊~~~   
  2.   
  3. #include<iostream>   
  4. using namespace std;   
  5. struct NodeTree    
  6. {   
  7.  int val;   
  8.  struct NodeTree * lefttree;   
  9.  struct NodeTree * righttree;   
  10.  NodeTree(int item, NodeTree *left = NULL, NodeTree *right = NULL)   
  11.         : val(item), lefttree(left), righttree(right)  //构造函数默认的lefttree,righttree为NULL   
  12.     {   
  13.     }   
  14. };   
  15. class BinaryTree   
  16. {   
  17. public:   
  18.  BinaryTree(){root =NULL;}   
  19.  //迭带插入的方法建二叉搜索树   
  20.     void Insert(const int node)                                                   
  21.     {                                        
  22.         NodeTree *currentpointer;        //当前节点指针     
  23.         NodeTree *parentpointer;         //父亲节点指针       
  24.         NodeTree *newpointer;    
  25.         //ptr必须为根节点指针的引用   
  26.         NodeTree *ptr = root;   
  27.         newpointer = new NodeTree(node); //新动态分配一个节点   
  28.      
  29.         if(root == NULL)    //如果此时树为空,返回新开辟的节点   
  30.         {   
  31.             root = newpointer;   
  32.         }   
  33.         else  
  34.         {   
  35.             currentpointer = ptr;        //保存root指针   
  36.    //一直移动到是使parentpointer指向叶子节点而currentpointer为NULL   
  37.             while(currentpointer != NULL)    //当当前节点不为空的情况下   
  38.             {   
  39.                 parentpointer = currentpointer; //用指向父亲节点的指针保存当前指针   
  40.        
  41.                 if(currentpointer->val > node)   
  42.                 {   
  43.                     currentpointer = currentpointer->lefttree;   
  44.                 }   
  45.                 else  
  46.                 {   
  47.                     currentpointer = currentpointer->righttree;   
  48.                 }   
  49.             }   
  50.             //以下是将节点插入   
  51.             if(parentpointer->val > node)   
  52.             {   
  53.                 parentpointer->lefttree = newpointer;   
  54.             }   
  55.             else  
  56.             {   
  57.                 parentpointer->righttree = newpointer;   
  58.             }   
  59.         }   
  60.     }   
  61.     
  62.  //创建方法,依次插入   
  63.     NodeTree *Creat(int data[],int len)    
  64.     {   
  65.         for(int i=0; i<len; i++)   
  66.         {   
  67.             Insert(data[i]);   
  68.         }   
  69.         return root;   
  70.     }   
  71.  void PreOrder()   
  72.     {   
  73.         cout<<"前序遍历的结果为:";   
  74.         PrePrint(root);   
  75.     }   
  76.  void InOrder()   
  77.     {   
  78.         cout<<"中序遍历的结果为:";   
  79.         InPrint(root);   
  80.     }   
  81.     
  82.     void PostOrder()   
  83.     {   
  84.         cout<<"后序遍历的结果为:";   
  85.         PostPrint(root);   
  86.     }   
  87.   
  88.  void PrePrint(NodeTree *p) //前序遍历   
  89.     {   
  90.         if(p != NULL)   
  91.         {   
  92.             cout << p->val << ',';   
  93.             PrePrint(p->lefttree);   
  94.             PrePrint(p->righttree);   
  95.         }   
  96.     }   
  97.  void InPrint(NodeTree *p)  //中序遍历   
  98.     {   
  99.         if(p != NULL)   
  100.         {   
  101.             InPrint(p->lefttree);   
  102.             cout<< p->val<<',';   
  103.             InPrint(p->righttree);   
  104.         }   
  105.     }   
  106.     void PostPrint(NodeTree *p)  //后序遍历   
  107.     {   
  108.         if(p != NULL)   
  109.         {   
  110.             PostPrint(p->lefttree);   
  111.             PostPrint(p->righttree);   
  112.             cout<< p->val<< ',';   
  113.         }   
  114.     }   
  115.       
  116.   
  117. protected:   
  118. private:   
  119.  NodeTree *root;   
  120. };   
  121. void main()   
  122. {   
  123.       BinaryTree tr;   
  124.       int a[10] = {6,5,7,2,1,3,8,4,10,9};   
  125.       tr.Creat(a ,10);   
  126.       tr.PreOrder();   
  127.       cout<<endl;   
  128.       tr.InOrder();   
  129.       cout<<endl;   
  130.       tr.PostOrder();   
  131.       cout<<endl;   
  132. }   

 

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值