若将关键字 1,2,3,4,5,6,7 依次插入到初始为空的平衡二叉树 T 中,则 T 中平衡因子为 0 的分支结点的个数是( )。
A. 0
B. 1
C. 2
D. 3
方法一:模拟
本题要求模拟平...
用户登录可进行刷题及查看答案
本题要求模拟平衡二叉树(AVL树)的插入过程。
将AVL树调整平衡的方法主要有旋转法和中序遍历法。
旋转法
观察插入不平衡结点的在所在子树上的路径:
由于关键字是从小到大插入,出现的都是RR平衡旋转。
中序遍历法
下面介绍中序遍历法,中序遍历法本质是利用AVL树的性质从结果出发直接找出调整后AVL树的根结点。
第一步:标记出插入不平衡结点从所在子树上的根结点到插入结点路径上的3个元素,标记3个元素为橙色,再标记3个橙色元素中间元素为红色,红色元素即为调整后子树的根结点,左边橙色元素为调整后子树左子树根结点,右边橙色元素为调整后子树右子树根结点。
第二步:写出子树的中序遍历序列,调整前后AVL树的中序遍历序列保持不变,将剩余结点加入到调整后的子树中。
此时,所有关键字都已经插入到AVL树中。
题目要求考察平衡因子为 0 的分支结点,所以我们只需要考察AVL树中所有的非叶结点,即结点 2、4 和 6 ,其左右子树高度相同,平衡因子为 0 ,所以平衡因子为 0 的分支结点总共有 3 个。
本题选D。
方法二:贪心
当然,模拟完整的AVL树插入过程非常麻烦,由于AVL树一定是平衡的,总共 7 个结点,我们很容易构造出一棵满二叉树,满二叉树的根结点和两个孩子结点为符合题目要求的结点,总共有 3 个结点。
题目要求考察平衡因子为 0 的分支结点,所以我们只需要考察AVL树中所有的非叶结点,其左右子树高度相同,平衡因子为 0 ,所以平衡因子为 0 的分支结点总共有 3 个。
登录后提交答案
暂无评论,来抢沙发