树:1.有且仅有一个称为根的节点;2.当n>0时,其余的节点可以分为m(m>0)个互不相交的有限集。每一个节点又是一棵树,并且称为根的子树。
节点的分类:节点拥有的子树数称为节点的度。度为0称为终端节点或者叶节点;度不为0的称为非终端节点或者分支节点。树的度是树内节点的度的最大值。
节点间关系:节点的子树的根称为该节点的孩子,该节点称为孩子的双亲。同一个双亲的孩子之间称为兄弟。如果将树中节点的各子树看成是从左到右是有次序的,不能互换,称改树为有序树,否则称为无序树。
结点的层次:树中结点最大层次成为树的深度或高度。如果树中结点的各子树看做是有序的不能互换的则称该树为有序数,否则为无序树,森林是m(m>=0)颗互不相交的树的集合。
树的存储结构:顺序存储、链式存储
孩子兄弟表示法,随之引出二叉树。
二叉树定义:二叉树是n(n>=0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两颗互不相交的,分别称为根节点的左子树、根节点只有右子树、根节点既有左子树又有右子树。
五种基本形态:空二叉树、只有一个根节点、根节点只有左子树、根节点只有右子树、根节点既有左子树又有右子树。
二叉树的特点:1.每个节点最多有两颗子树,即不存在度大于2的节点。2.左子树和右子树是有序的,不能随便颠倒。3.即使树中某个节点只有一颗子树,也要区分是左子树还是右子树。
满二叉树:深度为k且含有2^k-1个节点的二叉树称为满二叉树。
完全二叉树:(这个不是很明白,要仔细看)如果一个有n个节点的二叉树按满二叉树方式子上而下,自左至右对它进行编导,若树中所有节点和满二叉树的1~n编号完全一致,则称该树为完全二叉树。
二叉树的性质:
1.1.在二叉树的第i层上最多有2i-1 个节点 (i>=1)。
2.二叉树中如果深度为k,那么最多有2k-1个节点。(k>=1)。
3.n0=n2+1 n0表示度数为0的节点(叶子节点) n2表示度数为2的节点。
4.在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]+1是向下取整(不大于[log2n]+1
的最大整数)。
5.(1)(这个最为重要!!!)若对含 n个结点的完全二叉树从上到下且从左至右进行 1至 n的编号,则对完全二叉树中任意一个编号为 i的结点:1.若i=1,则该结点是二叉树的根,无双亲,否则(i>1时),编号为【i/2】(向下取整)的结点为其双亲结点;
(2)若2i>n,则该结点无左孩子,否则,编号为2i的结点为其左孩子结点;
(3)若2i+1>n,则该结点无右孩子,否则,编号为2i+1的结点为其右孩子结点。
遍历次序,这个最为重要!1.前序遍历:根 左 右
2.中序遍历:左 根 右
3.后序遍历:左 右 根
其中数据结构如果笔试考到,肯定考的是二叉树,其中二叉树的遍历(递归算法):面试题目:推导遍历结果。
《大话数据结构P212》
接下来就是实际看代码来查找不会有疑问的知识点。