算导--12.3-1二叉搜索树插入的递归版本

来源:互联网 发布:菲律宾淘宝 编辑:程序博客网 时间:2024/06/06 02:52

二叉搜索树插入元素key的递归版本

主要思想:从树根开始,比较key与树根的元素的大小:

若小于,判断新树根左孩子是否为空,若为空则此左孩子所在位置即为插入点,若为空则把树根的左孩子作为新的树根进行递归处理

若大于或等于,判断新树根右孩子是否为空,若为空则此右孩子所在位置即为插入点,若为空则把树根的右孩子作为新的树根进行递归处理

关键代码如下:

//递归版本      void RecursiveInsert(BinTreeNode* node,BinTreeNode* T)      {          BinTreeNode* p = T;          if(node->key < p->key)          {              if(p->left == NULL)              {                  p->left = node;                  return ;              }  <span style="white-space:pre"></span>RecursiveInsert(node,p->left);          }          else          {              if(p->right == NULL)              {                  p->right = node;                  return ;              }              RecursiveInsert(node,p->right);          }      }      void RecursiveBinaryInsert(int key)      {          BinTreeNode* node=new BinTreeNode(key);          if(root == NULL)          {              root = node;              return ;          }          RecursiveInsert(node,root);      }  


0 0
原创粉丝点击