树的概念

定义:

树:连通无回路的无向图是一棵树.

森林:若图G中至少有两个连通分支,每个连通分支都是树,则称图G是森林.

根:树中的根是树的一个节点,任意节点都可以为根,根据不同问题可以选择树的一个顶点为根.

子节点&父节点:树根为0层,直接和树根相连的节点为根节点的子节点,根节点为其父节点,根节点的子节点为树的1层.对于除了根节点以外的节点u来说,直接与其相连的节点中,除了一个父节点以外的所有节点都是u的子节点,u节点的子节点的层数为u节点的层数加1.

子树:对于树中的一个节点u来说,包含其一个儿子节点以及儿子节点的所有后辈节点的树称为节点u的子树.

兄弟节点:同一父节点的子节点.

叶子节:没有子节点的节点称为叶子节点.

分支节点:除了根节点和叶子节点之外的所有节点都称为分支节点.

树高:树的总层数.

二叉树:如果每个节点的儿子节点不多于两个,则称这棵树为二叉.每个父节点的子节点用左右儿子节点来加以区分,以左儿子节点为根的子树称为左子树,以右儿子节点为根的树称为右子树.

满二叉树:如果一个二叉树的任何节点或者树叶,或者恰好有两颗非空子树,则此二叉树称为满二叉树.

完全二叉树:如果一棵二叉树最多只有最下面的两次节点度数小于2,并且最下面一层的节点都集中在该层的最左边的连续位置,成称其实完全二叉树.

性质:

对于一棵有N个节点的树,一定有(N - 1)条边,如果删去一条边,将变成两棵树;如果添加一条边.将出现唯一一条回路.

树上任意两个顶点之间存在唯一路径.

在二叉树的第i层上至多有2^(i - 1)个节点(i >= 1).

深度为k的二叉树至多有2 ^ k - 1个节点(k >= 1).

对于任何一个二叉树,如果其叶子节点的数目为n0,度为2的节点数目为n2,则有n0 = n2 + 1.

具有n个节点的完全二叉树的深度为(int)log2(n) + 1.

树的遍历:

二叉树的遍历1)前序遍历

  前序遍历的递归定义:对于一个节点,访问并输出根的信息;按照前序遍历左子树;按照前序遍历右子树.

2)中序遍历

  中序遍历的递归定义:对于一个节点,按照中序遍历左子树;访问并输出根的信息;按照中序遍历右子树.

3)后序遍历

  后序遍历的递归定义:对于一个节点,按照后序遍历左子树;按照后续遍历右子树;访问并输出根的信息.

总结:对于二叉树的三种遍历次序来说,整棵树的根一定是前序遍历序列的第一个节点,一定是后序遍历序列的最后一个节点.在中序遍历序列中,根节点前面的点一定属于根的左子树,根节点后面的点一定属于右子树.只要回到一棵二叉树的中序遍历序列和前序(或者后序)遍历序列,就可以唯一的确定二叉树的结构并写出另一种遍历序列.否则不能确定.

  上述的三种遍历方式,除了中序以外都可以扩展到k叉树(每个节点的子节点个数都小于或者等于k)上.

原文地址:https://www.cnblogs.com/Ash-ly/p/5459688.html