首页 > 编程知识 正文

treeset排序原理(treemap排序是如何实现的)

时间:2023-05-06 16:02:48 阅读:74445 作者:2382

目录树的基本概念TreeTreeNode

树的基本概念

树的定义:

树是非线性的数据结构

树是由n(n=0)个节点构成的有限集合,如果n=0,则称为空树

树中(n 0)的第一个节点称为根节点,根节点只是直接跟在后面,没有直接前驱

除根以外的节点分为m(m=0)个互不相交的有限集合T0、T1、…、Tm-1,各集合又是树,该树也被称为根树的子树

树示例树中度的概念:

的节点包含一个数据和到几个子树的分支

节点所具有的子树的数量称为节点的度

树中的度是所有节点的中度最大值

度为0的节点称为叶节点

度不为0的节点称为分支节点

树度示例:度3树树中的前驱和后继:

节点的直接后继称为该节点的孩子

因此,该节点被称为孩子的父母

节点的孩子…称为该节点的子孙

因此,该节点被称为后代的祖先

同一父母的孩子互相叫兄弟

树的前驱和后继实例树中的深度或高度:

树中节点的最大级别称为树的深度或高度

树中节点的示例分层结构树的有序性:

树中节点的各子树从左向右有顺序,子树之间不能互换位置时,将该树称为顺序树,否则称为无序树

树的规律性示例森林的概念:

森林是n(n=0)棵互不相交的树的集合

3树木组成的森林样本树与结点之间的关系:

树和节点是两个类,在树中引用节点(组合关系)

树与节点的关系

实现Tree抽象父类Tree并定义树的基本功能接口

Tree.h

# ifndef _ _ tree _ h _ # define _ _ tree _ h _ # include ' object.h ' # include ' treenode.h ' # include ' shared templatetypenametclasstree : publicobject )保护性3360 treenode t * m _ root; //不允许封装复制结构和赋值结构,不允许复制或赋值树(consttreete ); 树操作器=(consttreete ); 公共: tree ((m _ root=null; } virtualboolinsert (treenode t * node )=0; virtualboolinsert(consttvalue,TreeNodeT* parent )=0; virtualsharedpointertreetremove (常数值)=0; virtualsharedpointertreetremove (treenode t * node )=0; 虚拟订单*查找(常数值)常数=0; 虚拟节点*查找(treenode t * node ) const=0; 虚拟趋势t *根() const=0; 虚拟int degree () const=0; 虚拟int count () const=0; 虚拟int height () const=0; 虚拟布尔begin ()=0; 虚拟bool next ()=0; 虚拟t current ()=0; 虚拟布尔结束()=0; 虚拟语音清除()=0; (; }#endif TreeNode实现抽象父类TreeNode并定义节点的基本功能接口

TreeNode.h

# ifndef _ treenode _ h _ # define _ _ treenode _ h _ # include ' object.h ' namespacejylib {/*树节点(抽象类)是父节点*/templatetypenametclasstreenode : publicobject { protected 3360 boolm _ flag; //堆对象标记//不允许复制结构和赋值结构封装、复制或赋值Treenode(ConstTreenodeTE ); treenode operator=(consttreenodete );/*重载new操作符,使其成为保护成员只能使用外部提供new一个对象的封装函数NewNode的函数。 */void *操作者新(统一初始化) throw ) )返回对象336033333 }公共: t value; TreeNodeT* parent; TreeNode () { parent=NULL; m_flag=false; } bool flag ()//返回该节点是否为堆对象) { return m_flag; }虚拟到treenode ()=0; (; templatetypenamettreenodet :3360到treenode (/用虚函数实现抽象类({}}#endif

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。