Python数据结构与算法——第三十课 平衡二叉树的层数平衡法删除

  平衡二叉树的节点删除也可能会导致平衡二叉树失衡,用层数平衡法进行调节恢复平衡。其步骤如下:

  (1)找到需要删除的节点:创建一个列表放从根节点到被删节点的列表,列表中的每一项由节点和它与父节点的关系(根节点:0,左:1;右:2)的元组(node,pflag)

  (2)删除的节点:叶节点直接删除;节点只有左子树或右子树,左子树或右子树上移;如果左子树或右子树都有,当节点的层数平衡因子大于0时,删除出左子数最大值替换该节点值;当节点的层数平衡因子不大于0时,删除出右子数最小值替换该节点值。被删节点的列表延伸到真正被删节点。

  (3)平衡调整:如果删除路径中有节点(除了真正被删节点外),倒序调节层数平衡因子。完成。

  程序代码:

 

 

 

 

 

 

 

  运行结果:

 

 

 

 

 

  练习1:把上例的列表数据顺序随意打乱,看看运行效果。

 

  学思营编程课堂基于蓝桥STEM86平台https://www.stem86.com,开展学编程三部曲:

Scratch(三年级以前)>>>Python(四年级以后)>>>C++(七年级以后)教育实验活动,任何人可以免费参加,打开https://xuesiying.stem86.com网页注册进入课堂,也可关注本公众号留言。

更多课程请打开学思营同步网站:

http://www.5xstar.com/doc.html

 

参考资料:

1、《Python算法图解》何韬编著 清华大学出版社