树的相关知识-------全面解决树的问题

来源:互联网 发布:播音艺考生软件 编辑:程序博客网 时间:2024/06/03 13:02

1、树的相关知识


树的度:结点拥有的子树数称为结点的度  度为0的结点称之为叶结点或终端结点;

树的深度:从根结点开始,根结点所在层次为第一层,树中结点的最大层次称为树的深度或者高度;


2、二叉树


满二叉树:在二叉树中,如果所有的分支结点都存在左子树和右子树,并且所有的叶子节点都位于同一个层次,这样的二叉树为满二叉树


3、完全二叉树


对于一个树,有n个结点,按层序进行编号,如果编号为i的结点(i<=n)与同样深度的满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。


4、二叉树的性质

性质1:

二叉树的第i层上至多有pow(2,i-1)个结点


性质2:

深度为k的二叉树至多有pow(2,k) -1个结点


性质3:

对于任何一棵二叉树,度为0的结点个数为n0,度为2的结点个数为n2,那么n0=n2+1


性质4:

具有n个结点的完全二叉树深度为【log(n)】+1


性质5:

对于一棵n个结点的完全二叉树,其结点按层序编号,对任一个结点i(1<=i<=n)

(1)、如果i=1,则结点i为二叉树的根,无双亲结点

(2)、如果2i>n,则结点i无左孩子,否则其左孩子结点编号为2i

(3)、2i+1>n则结点i无右孩子,否则其右孩子结点编号为2i+1


5、二叉树的存储结构

二叉链表,每个结点最多有两个孩子,所以用两个指针域,一个数据域来表示二叉树中的结点。


typedef struct TreeNode{

ElementType data;

struct TreeNode *lchild,*rchild;

}S_TreeNode;


6、遍历二叉树


前序遍历 中序遍历 后序遍历


7、二叉排序树

又称为二叉查找树,它或者为空树,或者为具有以下性质的二叉树:

(1)、若它的左子树不空,则左子树所有结点的值均小于根结点的值;

(2)、若它的右子树不空,则右子树所有结点的值均大于根结点的值;

(3)、它的左右子树也为二叉排序树。


注意:构造一棵二叉排序树的目的并不是为了排序,而是为了提高 查找、插入、删除关键字的效率


8、平衡二叉树AVL

(1)、平衡二叉树是一种二叉排序树,空树或者树中每一个节点的左子树和右子树高度差至多为1

将二叉树上结点的左子树深度减去右子树深度 的值称为平衡因子BF,因此二叉树上所有结点的平衡因子只可能为-1,0,1

(2)、最小不平衡子树

距离插入结点最近,且平衡因子的绝对值大于1的结点为根的子树,我们称之为最小不平衡二叉树。






原创粉丝点击