目录
二叉树(Binary Tree)是每个节点最多有两个子节点的树结构,通常子节点被称作左子节点(left child)和右子节点(right child)。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的特点
每个节点最多有两个子节点:通常一个是左子节点,另一个是右子节点。
有序性:左子树和右子树是有顺序的,不能随意互换。
路径:从根节点到任意节点的路径是唯一的。
二叉树类型
满二叉树:一个深度为k且有2^k - 1个节点的二叉树称为满二叉树。每一层上的节点数都是最大节点数。
完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
二叉查找树(BST):也称为二叉搜索树或有序二叉树,它或者是一棵空树或者是具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值;它的左、右子树也分别为二叉查找树。
平衡二叉树(AVL树):它是一棵自平衡的二叉查找树,任何一个节点的两个子树的高度最大差别为1。
二叉树在编程和数据结构中有许多应用,例如: