1.树和其基本的术语

java 树状结构根节点变化将子节点同样变化 数据结构根节点_完全二叉树

根节点 : 根节点就是一个没有双亲的结点。(A就是根节点)

边:边表示从双亲结点到孩子结点的链接。(上图所有链接都是边)

叶子结点:没有孩子的结点叫做叶子结点。(如E,J,K,H,I)

兄弟结点:拥有相同双亲结点的所有孩子结点叫做兄弟结点。(B,C,D互为兄弟结点)

祖先结点:如果存在一条从根结点到结点q的路径,且结点p出现在这条路径上,那么就可以把结点p叫做结点q的祖先结点,结点q也叫作结点p的子孙节点。(A,C和G是K的祖先节点)

结点的大小:结点的大小是指子孙的个数,包括其自身。(子树C的大小为3)

树的层:位于相同深度的所有结点的集合叫做树的层,根节点位于0层。(B,C和D具有相同的层)

结点的深度:是指从根结点到该结点的路径的长度。(G点的深度为2,A—C—G)

结点的高度:是指从该结点到最深结点的路径长度。(B点的高度为2,B—F—J)

树的高度:是树中所有结点高度的最大值,树的深度是树中所有结点深度的最大值。对于同一棵树,其深度和高度是相同的。但是对于各个结点,其深度和高度不一定相同。

斜树:如果树中除了叶子结点外,其余每一结点只有一个孩子结点,则这种树称作斜树。

java 树状结构根节点变化将子节点同样变化 数据结构根节点_完全二叉树_02

2.二叉树

定义:如果一棵树中的每个节点有0,1和2个孩子结点,那么这棵树就称为二叉树。

2.1二叉树的类型

①严格二叉树:二叉树中的每个结点要么有两个孩子结点,要么没有孩子结点。

java 树状结构根节点变化将子节点同样变化 数据结构根节点_二叉树_03

②满二叉树:二叉树中的每个结点恰好有两个孩子结点且所有叶子结点都在同一层。

java 树状结构根节点变化将子节点同样变化 数据结构根节点_二叉树_04

③完全二叉树:在定义完全二叉树之前,假定二叉树的高度为h。对于完全二叉树,如果将所有结点从根结点开始从左至右,从上至下,依次编号,那么将得到从1~n(n为结点总数)的完整序列。在遍历过程中对于空指针也应赋予编号。如果所有叶子结点的深度为h或h-1,且在结点编号序列中没有漏掉任何数字,那么这样的二叉树叫作完全二叉树。

java 树状结构根节点变化将子节点同样变化 数据结构根节点_结点_05