我需要一个伪代码,使用给定的二叉树T,在每个节点中使用一个值,搜索并删除具有相同值的兄弟的所有叶子。 我需要一个最佳复杂度伪代码。
我猜它应该像这样的东西
deleteCopy(TREE T)
if T != nil then
if T.left = null and T.right = null
if T.parent.right.left = null and T.parent.right.right = null
if T.parent.left.value = T.parent.right.value then
delete T
deleteCopy(T.left())
deleteCopy(T.right())
这是对的吗?
答案 0 :(得分:0)
我不是这方面的专家,但你应该使用遍历算法。
inOrderSearch(Node n) inOrderSearch(n.left) check(n) inOrderSearch(n.right) check(Node n) right = n.right left = n.left if right.left == null && right.right == null && left.left == null && left.right == null if right.value == left.value n.left = null
我选择了按顺序遍历,但在这种情况下,水平顺序更好。 在check子例程中,
您可以开始使用根节点进行搜索。