- 前序遍历:当前节点,左子节点,右子节点
- 中序遍历:左子节点,当前节点,右子节点
- 后序遍历:左子节点,右子节点,当前节点
- 层序遍历:一层一层的遍历
二叉树是随机插入数
二叉查找树是有规律的插入(小的存左边,大的存右边)
二叉平衡树是任意左右节点相差不超过1
平衡二叉树旋转机制
规则1:左旋
规则2:右旋
触发时机:当添加一个节点后,该树不再是一个平衡二叉树
左旋
确定支点:从添加的节点开始,不断的往父节点找不平衡的节点
步骤:以不平衡的点作为支点,把支点左旋降级,变成左子节点,晋升原来的右子节点
第二种情况步骤
以不平衡的点作为支点,将根节点的右侧往左拉,原先的右子节点变成新的父节点,,并把多余的左子节点让出,给已经降级的根节点当作右子节点
右旋与左旋同理
数据结构(平衡二叉树)需要旋转的四种情况
- 左左:当根节点左子树的左子树有节点插入,导致二叉树不平衡(解决方案:一次右旋)
- 左右:当根节点左子树的右子树有节点插入,导致二叉树不平衡(解决方案:先局部左旋在整体右旋)
- 右右:当根节点右子树的右子树有节点插入,导致二叉树不平衡(解决方案:一次左旋)
- 右左:当根节点右子树的左子树有节点插入,导致二叉树不平衡(解决方案:先局部右旋在整体左旋)