用 Python 修复错误的二叉树的程序
假设我们有一个二叉树有一个问题; 一个节点的右子节点指针在二叉树中错误地指向同一级别的另一个节点。因此,为了解决这个问题,我们必须找到具有这个错误的节点并删除该节点及其子代,但保留它指错的节点。我们返回修复后的二叉树的根节点。
因此,如果输入如下:
我们可以看到4和6之间有一个错误的链接。节点4的右子节点指向6。
那么输出,修正后树的中序表示将为-2、3、5、6、7、8,
删除节点4,因为它指向错误的节点6。
要解决这个问题,我们将按照以下步骤进行 –
- q:包含根的新 deque
- p:一个新的 map
- visited:一个新的 set
- while q 不为空,做以下操作
- cur:q 的最左侧的元素
-
如果 “cur” 存在于 “visited” 中,则
- is_left:p[p[cur,0]]
-
grand_p:p[p[cur,0]]
-
如果 is_left 不为空,则
-
grand_p 的左侧 = null
-
否则,
-
grand_p 的右侧 = null
-
返回 root
-
将cur添加到 visited 中
-
如果 cur 的左侧不为空,则
- p[cur的左侧]:新元组(cur, 1)
-
将cur的左侧插入到q的末尾
-
如果 cur 的右侧不为空,则
- p[cur的右侧]:新元组(cur, 0)
-
将cur的右侧插入到q的末尾
- 返回 root
以下是示例。
更多Python相关文章,请阅读:Python 教程