二叉树定义:
1.有且仅有一个特定的称之为根root的结点
2.当n>1时,除根结点之外的其余结点分为两个互不相交的子集。他们称为二叉树的左子树和右子树。
二叉树的一种建立方法:
若对有n个结点的完全二叉树进行顺序编号(1<=i<=n),那么,对于编号为i(i>=1)的结点。
当i=1时,该结点为根,它无双亲结点;
当i>1时,该节点的双亲编号为[i/2];
若2i<=n,该结点为编号为2i的左孩子,否则没有左孩子
当2i+1<=n,该结点有编号为2i+1的右孩子,否则没有右孩子
利用上个性质,对任意二叉树,先按满二叉树对其所有结点进行编号。
注意:由于此树并非完全树,所以结点的编号并不连续。
遍历二叉树:
遍历二叉树是指以一定的次序访问二叉树中的每个结点,并且每个结点仅被访问一次,访问结点是指进行各种操作的简称。3种遍历次序:中根遍历二叉树、先根遍历二叉树、后根遍历二叉树。
递归算法:
先根遍历:如果根不为空,1.访问根结点2.按先根次序遍历左子树,3.按先根次序遍历右子树,否则返回。
中根遍历:如果根不为空,1.按中根次序遍历左子树,2.访问根结点,3.按中根次序遍历右子树,否则返回。