美文网首页
53_树中结点的查找操作

53_树中结点的查找操作

作者: 编程半岛 | 来源:发表于2018-07-22 16:02 被阅读6次

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

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

相关文章

  • 53_树中结点的查找操作

    关键词:基于数据元素值的查找、基于结点的查找 0. 查找的方式 基于数据元素值的查找GTreeNode* f...

  • 树(C语言)

    判定树 每个结点需要查找的次数刚好为该结点所在的层数,查找成功时查找次数不会超过判定树的深度,n个结点的判定树的深...

  • 数据结构与算法——单词查找树

    数据结构与算法——单词查找树 单词查找树由字符键中的所有字符构造而成,和各种查找树一样,单词查找树也是由结点链接所...

  • LeetCode题解之递增顺序查找树

    递增顺序查找树 题目描述 给你一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没...

  • 897.递增顺序查找树

    题目#897.递增顺序查找树 给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左...

  • 求解二叉树中两个结点的最低公共父结点

    构建一棵二叉树(不一定是二叉查找树),求出该二叉树中某两个结点的最低公共父结点。借用一张图如下: 结点8 和 结点...

  • 单词查找树

    和各种查找树一样,单词查找树也是由链接和结点所组成的数据结构,这些链接可能为空,也可能指向其他结点。每个结点都只可...

  • LeetCode 897. 递增顺序查找树

    897. 递增顺序查找树 给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结...

  • 红黑树

    平衡二叉查找树 二叉树中任意一个结点的左右子树高度相差不能大于1。 AVL树 严格符合定义 红黑树 跟结点是黑色每...

  • 十、二叉查找树

    二叉查找树 定义:二叉查找树,又被称为二叉搜索树。其特点如下:设x为二叉查找树中的一个结点,x节点包含关键字key...

网友评论

      本文标题:53_树中结点的查找操作

      本文链接:https://www.haomeiwen.com/subject/gyiapftx.html