码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树-二叉查找树-AVL树

时间:2016-06-08 00:17:15      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

一、二叉树

定义:每个节点都不能有多于两个的儿子的树。

二叉树节点声明:

1 struct treeNode
2 {
3      elementType   element;
4      treeNode      * left;
5      treeNode      * right;               
6 }

应用:

中缀表达式——>后缀表达式(栈的应用)——>表达式树(栈的应用2)

栈的应用2:读取后缀表达式,操作数入栈,遇操作符后,指向栈里前两位元素t1和t2的指针出栈(t1先弹出,作为该操作符的右儿子),并将指向该操作符的指针入栈。

 二、二叉查找树

定义:

结构性:二叉树;

排序性:右子树中最小值  >  X关键字  >  左子树中最大值(对任意节点关键字X均成立)

1、清空树(递归)makeEmpty

 1 searchTree * makeEmpty( searchTree * T)
 2 {
 3      if( T != NULL)
 4     {
 5          makeEmpty( T -> left);
 6          makeEmpty( T -> right);
 7          delete  (T); // 基准情况
 8     }  
 9      return T;  
10 }

 2、Find

searchTree * find( elementType X , searchTree * T)
{
      if( T = NULL)
         return NULL; //非空判断

      if(X < T->element)
         return find (X , T->left);
      else  
      if(X > T->element)
         return find(X , T->right);    
      else
         return T;  //找到元素X
}    

3、findMin  &&  findMax(举一例,(非)递归法,利用其排序性找到相应节点)

递归法:

searchTree * findMax(  searchTree * T)
{
      if( T = NULL)
          return NULL; //非空判断
      else    
      if(T->right == NULL)    
         return T;      //基准情况

      else
         return findMax(T->right);
}  

非递归法:

searchTree * findMax(  searchTree * T)
{
      if( T = NULL)
          return NULL; //非空判断
      else    
      while(T->right != NULL)    
          T = T->right;

          return T;
}  

4、insert

searchTree * insert( elementType X , searchTree * T)
{
      if( T == NULL)
      {
           T = searchTree New(searchTree);
           if(T == NULL)
              cout << "out of space." << endl; 
           else
               {
                    T->element = X;
                    T->left = T->right = NULL;
               }
      }
      else    
           if(X < T->element)
              T->left = insert(X , T->left);  
      else    
           if(X > T->element)
              T->right = insert(X , T->right);   
      
      return T;
}  

 未完待续。。。

 

二叉树-二叉查找树-AVL树

标签:

原文地址:http://www.cnblogs.com/Lunais/p/5568615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!