• 树——二叉树结点的查找


    1,查找方式:

           1,基于数据元素值的查找:

                  1,BTreeNode<T>* find(const T& value) const

           2,基于结点的查找:

                  1,BTreeNode<T>* find(TreeNode<T>* node) const 

                

    2,树中数据元素和结点的查找:

     

          

    3,基于数据元素值的查找:

     

           1,定义功能:find(node, value)

                  1,在 node 为根结点的二叉树中查找 value 所在的结点:

           2,功能函数代码实现:

     1    /*定义按照值查找的递归功能函数*/
     2    virtual BTreeNode<T>* find(BTreeNode<T>* node, const T& value) const  
     3     {
     4         BTreeNode<T>* ret = NULL;
     5 
     6         if( node != NULL )  // 查找的不是空结点
     7         {
     8             if( node->value == value )  // 根结点值相等,则找到了
     9             {
    10                 ret = node;
    11             }
    12             else
    13             {
    14                 if( ret == NULL )  // 根结点没有查到,查左子树
    15                 {
    16                     ret = find(node->left, value);
    17                 }
    18 
    19                 if( ret == NULL )  // 左子树没有查到,查右子树
    20                 {
    21                     ret =  find(node->right, value);
    22                 }
    23             }
    24         }
    25 
    26         return ret;
    27    }

      3,成员函数的代码实现:

    1 BTreeNode<T>* find(const T& value) const 

    2 {

    3 return find(root(), value);

    4 }
     

    4,基于结点的查找:

           1,定义功能:find(node, obj)

                  1,在 node 为根结点的二叉树中查找是否存在 obj 结点;

      2,功能函数代码实现:

     1    /*定义按照结点查找的递归功能函数*/
     2     virtual BTreeNode<T>* find(BTreeNode<T>* node, BTreeNode<T>* obj) const
     3     {
     4         BTreeNode<T>* ret = NULL;
     5 
     6         if( node == obj )  // 如果是根结点
     7         {
     8             ret = node;  // 地址赋值给返回值
     9         }
    10         else
    11         {
    12             if( node != NULL )  // 查找结点非空
    13             {
    14                 if( ret == NULL )  // 不是根结点
    15                 {
    16                     ret = find(node->left, obj);  // 查找左子树
    17                 }
    18 
    19                 if( ret == NULL )
    20                 {
    21                     ret = find(node->right, obj);  // 查找右子树
    22                 }
    23             }
    24         }
    25 
    26         return ret;
    27    }

           3,成员函数代码实现:

    1 BTreeNode<T>* find(TreeNode<T>* node) const 

    2 {

    3 return find(root(), dynamic_cast<BTreeNode<T>*>(node));

    4 }
     
  • 相关阅读:
    zendstuido10 配置spket插件
    Extjs各版本的下载链接
    主题:Android、iPhone和Java三个平台一致的加密工具
    TestDisk 恢复rm -rf 的文件
    java实现定时任务的三种方法
    mac 下安装 lua5.3 + cjson
    Mac OS X 上Lua的安装方法
    Channel States
    JSON常见操作
    微信小程序——获取元素的宽高等属性
  • 原文地址:https://www.cnblogs.com/dishengAndziyu/p/10925417.html
Copyright © 2020-2023  润新知