笔记
一.二叉树的构建,查找,插入,删除
二叉树有顺序储存和链式储存,二者都有优缺点,顺序存储结构不方便插入删除,链式结构则不方便查找.
二叉树的查找,顺序结构的查找,通过查找节点的位置下标直接查找,链式结构,则需要通过指针依次一个个遍历查找.
二叉树的删除,顺序结构需要用需要用虚节点使二叉树成为完全二叉树,然后通过人为的操作,用特殊值来代表空节点,将节点的值改成特殊值,来代表删除二叉树的节点.链式结构,则通过父亲节点的指针指向空达到删除的目的.
**二.二叉平衡树
二叉平衡树在对节点进行插入删除的操作时,往往可能会破坏平衡,所以,需要在插入操作时对二叉树进行调整.根据不同的情况,分为LL型调整,LR调整,RR调整,RL调整.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
三.二叉树的遍历
1.先序遍历
void PreOrder(BiTree t)
{
if (t) {
cout << t->key;
PreOrder(t->lchild);
PreOrder(t->rchild);
}
}
2 .中序遍历
void InOrder(BiTree t)
{
if (t) {
InOrder(t->lchild);
cout << t->key;
InOrder(t->rchild);
}
}
3.后序遍历
void HouOrder(BiTree t)
{
if (t) {
HouOrder(t->lchild);
HouOrder(t->rchild);
cout << t->key;
}
}
疑难问题
在对二叉树的理论实现为代码时,在编写函数的时候,在函数的参数的传递过程中,出现了主函数中的变量引入函数中没有发生变化的现象,此时需要在函数的参数定义加上&引用符号.