1. 程式人生 > >資料結構 筆記:樹中結點的查詢操作

資料結構 筆記:樹中結點的查詢操作

查詢的方式

-基於資料元素值的查詢

·GTreeNode<T>* find(const T& value) const

-基於結點的查詢

·GTreeNode<T>* find(TreeNode<T>* node) const

基於資料元素值的查詢

-定義功能:find(node,value)

·在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);
                }

            }
        }
    }

 基於結點的查詢

-定義功能:find(node,obj)

·在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;
    }

總結:

-查詢操作時樹的關鍵操作之一

-基於資料元素的查詢可判斷值是否存在於樹中

-基於節點的查詢可判斷樹中是否存在指定結點

-插入操作和刪除操作都依賴於查詢操作