树是算法中比较总要的数据结构,需掌握熟练
1.什么是树?
集合论角度递归定义:树是有n(n≥0)个节点的有限集合,当n=0,为空树,当n>0,为非空树。任意一棵非空树·都满足:①有且仅有一个被成为根的节点 ②除根节点外的其余节点可分为m(m>0)个互不相交的有限集合,其中每个集合本身又是一棵树,被称为根的子树
2.树的相关术语
节点:节点包含数据元素及若干指向子树的分支信息;
节点的度:节点拥有的子树的个数,叶子结点的度为0;
树的度:树中节点的最大度数;
终端节点:度为0的节点,成为叶子结点;
分支节点:度大于0的节点,除了叶子,都是分支节点
内部节点:除了树根和叶子,都是内部节点
节点的层次:从根到该节点的层数
树的深度(高度):所有节点的最大层数
路径:树中两个节点之间所经过的节点序列
路径长度:两个节点之间路径上经过的次数
双亲、孩子:节点的子树的根被称为该节点的孩子,反之,该节点为其孩子的双亲
兄弟:双亲相同的节点互称兄弟
堂兄弟:双亲是兄弟的节点互称堂兄弟
祖先:即从节点到树根经过的所有节点,被称为该节点的祖先
子孙:节点的子树中所有节点都被称为节点的子孙
有序树:节点的鸽子树从左到右有序,不能互换位置
无序树:节点的各子树可以互换位置
森林:有m(m≥0)棵不相交的树组成的集合