AVL树
树对于查找是非常方便的,例如stl中常用的map和set,尤其是对于大数据量的情况下,树的查找要比数组和链表要快的多。
本文主要是实现AVL树,AVL树是一种平衡树,就是在插入时通过某种调整使某个节点的左右子树的高度差不大于1。
具体算法:
当某个节点不符合条件时,以右子树高于左子树为例,此时需要向左循环以增加左子树的高度,这时需要将右子树代替当前节点,并且的右子树的左子树调整为当前节点的右子树,其他不变,但是有一种可能行,就行右子树的右子树比较矮(比左子树的高度小1),因此在进行调整之前先把右子树的节点向右循环进行调整。
整个树的操作都是以递归的方式实现的。
源码地址:https://files.cnblogs.com/iamagamer/Tree.rar
其中tree.h是简单的二叉树的实现