53_树中结点的查找操作

关键词:基于数据元素值的查找、基于结点的查找

0. 查找的方式

  • 基于数据元素值的查找
    GTreeNode<T>* find(const T& value) const
  • 基于结点的查找
    GTreeNode<T>* find(GTreeNode<T>* node) const
    树中数据元素和结点的查找

1. 基于数据元素值的查找

  • 定义功能函数:GTreeNode<T>* find(GTreeNode<T>* node, const T& value) const
    在以node为根节点的树中查找value所在的结点
    递归查找
GTreeNode<T>* find(GTreeNode<T>* node, const T& value) const
    {
        GTreeNode<T>* ret = NULL;

        if( node != NULL )
        {
            if( node->value == value )
            {
                return node;
            }
            else
            {
                for(node->child.move(0);
                    !node->child.end() && (ret == NULL);
                    node->child.next())
                {
                    ret = find(node->child.current(), value);
                }
            }
        }

        return ret;
    }

GTreeNode<T>* find(const T& value) const
    {
        return find(root(), value);
    }

2. 基于结点的查找

  • 定义功能函数:GTreeNode<T>* find(GTreeNode<T>* node, GTreeNode<T>* obj) const
    在以node为根节点的树中查找是否存在obj结点
    递归查找
GTreeNode<T>* find(GTreeNode<T>* node, GTreeNode<T>* obj) const
    {
        GTreeNode<T>* ret = NULL;

        if( node == obj )
        {
            return node;
        }
        else
        {
            if( node != NULL )
            {
                for(node->child.move(0);
                    !node->child.end() && (ret == NULL);
                    node->child.next())
                {
                    ret = find(node->child.current(), obj);
                }
            }
        }

        return ret;
    }

GTreeNode<T>* find(TreeNode<T>* node) const
    {
        return find(root(), dynamic_cast<GTreeNode<T>*>(node));
    }

3. 小结

  • 查找操作是树的关键操作之一
  • 基于数据元素的查找可判断值是否存在于树中
  • 基于结点的查找可判断树中是否存在指定结点
  • 插入操作和删除操作都依赖于查找操作

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,786评论 0赞 25
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 2,543评论 0赞 3
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,519评论 0赞 16
  • 七月在美国,气温並不太高。除中午稍热,早上晚上都非常凉爽。 每天都去会面中国老人。有的人已经到美国生活了近十年...
    蔡衍波阅读 157评论 0赞 0
  • 让别人因为自己的存在而幸福,这不是一句空洞的口号,而是鼓励我们切实修养自身,变为谦谦君子,勇敢承担起应负的责任,做...
    蜗牛100阅读 348评论 0赞 0

友情链接更多精彩内容