树的一些概念
一、节点的度、深度
参见 https://github.com/Snailclimb/JavaGuide/blob/main/docs/cs-basics/data-structure/tree.md
二、二叉树
二叉树(Binary Tree)是一种树型结构,它的特点是每个结点至多只有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树的性质:
性质1:在二叉树的第i层上至多有2i-1个结点(i≥1)。
性质2:深度为k的二叉树至多有2k-1个结点,(k≥1)。
性质3:对任何一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。
三、满二叉树和完全二叉树
四、二叉搜索树
二叉搜索树(又:二叉查找树,二叉排序树,Binary Search Tree,BST)
满足以下几个条件:
1.若它的左子树不为空,左子树上所有节点的值都小于它的根节点。
2.若它的右子树不为空,右子树上所有的节点的值都大于它的根节点。
3.任意结点的左、右子树也分别为二叉搜索树。
五、二叉平衡树
平衡二叉树又称AVL树
平衡二叉树是一棵二叉搜索树,且具有以下性质:
1.可以是一棵空树
2.如果不是空树,它的左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。