树是一种很常用的数据结构,一般用来表示具有层次结构的数据。
本篇博客中主要包含三个方面:1.树的定义和基本概念 2.二叉树
一、树的定义和基本概念
1)树是n(n>=0)个结点的有限集合。当n=0时是一棵空树,当n>0时,至少含有一个结点。
2)根(Root):有且仅有一个结点(n=1)时,那个结点就是根节点
3)子树(Subtree):当n>1时,除了根节点以外的其余结点可以分为m个互不相交的集合,每个集合又可以构成一棵树,成为根的子树
4)叶子结点(leaf):没有子结点的结点
5)父结点(parent)和子结点(child):若结点x有一个以结点y为树根的子树,则x为y的父结点,y为x的孩子
6)兄弟结点(sibling):若z和y有同一个父亲,则z和y互为兄弟。
7)结点的度(degree):结点子树的个数
8)树的度:一棵树中最大的结点的度数
9)结点的层次(level):将根结点的层次设为1,其子结点的层次为2,以此类推
10)树的深度(depth):叶子结点的最大层次
11)祖先(ancestor):由某结点x到根节点的路径上的所有结点,均称为x的祖先。
举个例子:
这棵树共有13个结点(n=13),根节点为A,{B,E,F,K,L}、{C,G}、{D,H,I,J,M}是A的三棵子树,K,L,M是三个叶子节点,他们没有子树了。
B是A的子结点,是E,F的父结点,和C,D是兄弟。
B的度是2,D的度是3,结点的度最大是3(D的度),故树的度是3.
A的层次是1,B,C,D的层次是2,E,F,G,H,I,J的层次是3,K,L,M的层次是4,叶子节点(K,L,M)的最大层次是4,故树的深度是4.
M的祖先是H,D,A。
二、二叉树(Binary Tree)
首先,二叉树也是树,树的概念他都有的,只是比较特别。特别之处就在于:每个节点至多只有两个孩子,分为左孩子和右孩子。也就是说每个节点的度至多为2.