考研数据结构每日一技:二叉树的应用(1)

1,799 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

二叉树的应用

image.png

【概念】二叉排序树

又称二叉查找树(BST,Binary Search Tree) 一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树: 左子树上所有结点的关键字均小于根结点的关键字; 右子树上所有结点的关键字均大于根结点的关键字。 左子树和右子树又各是一棵二叉排序树。

image.png

【概念】二叉排序树的查找

左子树结点值< 根结点值< 右子树结点值 若树非空,目标值与根结点的值比较: 若相等,则查找成功; 若小于根结点,则在左子树上查找,否则在右子树上查找。 查找成功,返回结点指针;查找失败返回NULL

image.png

image.png

【概念】二叉排序树的插入

若原二叉排序树为空,则直接插入结点; 否则,若关键字k小于根结点值,则插入到左子树, 若关键字k大于根结点值,则插入到右子树

image.png

【概念】二叉排序树的构造

按照序列str={45, 24, 53,12}建立BST

按照序列str={24, 45, 12,53}建立BST

image.png

序列不同,二叉树的构造不同

【概念】二叉排序树的删除

第1种情况

先搜索找到目标结点: ① 若被删除结点z是叶结点,则直接删除,不会破坏二叉排序树的性质。

image.png

第2种情况

先搜索找到目标结点:

① 若被删除结点z是叶结点,则直接删除,不会破坏二叉排序树的性质。 ② 若结点z只有一棵左子树或右子树,则让z的子树成为z父结点的子树,替代z的位置。

image.png

第3种情况

先搜索找到目标结点: ① 若被删除结点z是叶结点,则直接删除,不会破坏二叉排序树的性质。 ② 若结点z只有一棵左子树或右子树,则让z的子树成为z父结点的子树,替代z的位置。 ③ 若结点z有左、右两棵子树,则令z的直接后继(或直接前驱)替代z,然后从二叉排序树中删去这个直接后 继(或直接前驱),这样就转换成了第一或第二种情况。

image.png