📄 avltree.h
字号:
//*******三月四号写于上海交通大学*****,有指教之处请联系pkzhiwang@gmail.com,本人不承诺都能予以回复//
//判定二叉平衡树,树中可以有多个具有相同的数据,但是删除时只删除最先遍历的一个
#ifndef AVLTREE_H
#define AVLTREE_H
#include "avltreenode.h"
template<typename X>
class avlTree
{
private:
avlTreeNode<X> *head,*cursor;
public:
avlTree()
{
cursor=head=0;
}
void insert(X);//增加一个节点
int countDifference(avlTreeNode<X> *);//计算每个节点的平衡因子
void printDifference(avlTreeNode<X> *);//显示每个节点的平衡因子
avlTreeNode<X>* getHead(){return head;}
avlTreeNode<X>** getHeadAddress(){return &head;}
void traverse(avlTreeNode<X> *);//遍历平衡二叉树
void del(X value);//删除某个节点
private:
void turnRight(avlTreeNode<X> *);
void turnLeft(avlTreeNode<X> *);
void adjust(avlTreeNode<X> *);//调整树,此调整只能调整只有一处需要调整就可以重新成为平衡二叉树的树
avlTreeNode<X>* findTheFirstInBalance(avlTreeNode<X> *);//自底向上找到第一个平衡因为的绝对值为2的节点
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -