zoukankan      html  css  js  c++  java
  • 数据结构-二叉树(1)

    树的抽象类型为:

    template <class T>
    class Tree{
    //  对象是树,在类界面中的position是树中结点的地址
    //  在顺序存储方式上是下标型,但链表存储方式下是指针型。T是树结点中存放数据的类型,要求所有结点的数据类型一致
    public:
        Tree();
        ~Tree();
        position Root();            //返回根结点地址
        BuildRoot(const T& value);  //建立树的根结点
        position FirstChild(position p);  //返回p的第一个子女地址或者0
        position NextSibling(position p); //返回p的下一个兄弟地址或者0
        position Parent(position p);      //返回结点p父结点地址,若p为根则返回0
        T getData(position p);
        bool InsertChild(const position p,const T& value);
        bool DeleteChild(position p,int i)  //在结点p下删除第i个结点和其子孙结点
        void DeleteSubTree(position t);   //删除以t为根结点的子树
        bool IsEmpty();
        void Traversal(void(*visit)(position p)); //遍历,visit是用户自编的访问结点p数据的函数
    }

    二叉树的抽象类型为

    template <class T>
    class BinaryTree{
    public:
        BinaryTree()
        BinaryTree(BinTreeNode<T> *lch, BinTreeNode<T> *rch, T item);   //构造函数,以item为根,lch、rch为左右结点构造子树
        int Height();
        int Size();
        bool IsEmpty();
        BinTreeNode<T> *Parent(BinTreeNode<T> *current);
        BinTreeNode<T> *LeftChild(BinTreeNode<T> *current);
        BinTreeNode<T> *RightChild(BinTreeNode<T> *current);
        bool Insert(T item);
        bool Remove(T item);
        bool Find(const T& item)const;
        bool getData(const T& item)const;  
        BinTreeNode<T> *getRoot()const;
        void perOrder(void (*visit)(BinTreeNode<T> *p));    //前序遍历,visit是访问函数
        void inOrder(void (*visit)BinTreeNode<T> *p);      //中序遍历
        void postOrder(void (*visit)(BinTreeNode<T> *p));  //后序遍历
        void levelOrder(void (*visit)BinTreeNode<T> *p);   //层次序遍历
    }
  • 相关阅读:
    MySQL数据库与表的增删改查
    JavaScript相关基础知识点
    用jquery制作一个二级导航下拉菜单
    jQuery如何获取元素及选择器的参考
    Trapping Rain Water
    First Missing Positive
    Combination Sum II
    Combination Sum
    vector的几小点
    C中字符结尾‘’的作用
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/9443711.html
Copyright © 2011-2022 走看看