如何删除索引值为X的特定叶节点并显示剩余的叶节点?

时间:2018-04-27 09:36:29

标签: java algorithm data-structures binary-tree recursive-datastructures

测试用例:

输入:

5
-1 0 0 1 1
2

https://i.stack.imgur.com/PJvCB.png

输出:

2

说明:

上面显示了与数字输入对应的树。最初,有3片叶子,2,3和4(标记为绿色)。如果我们删除节点2,则剩下两个叶子,即3和4.因此,答案是2。

https://i.stack.imgur.com/PJvCB.png

另一个测试案例:

输入:

5
-1 0 0 1 1
1

输出:

1

说明:

删除节点1后,剩下的唯一叶子是2。

1 个答案:

答案 0 :(得分:0)

您可以根据输入创建树形结构。每个节点都有以下值:node = { value, leftChild, rightChild }

function trace(node, deletedValue) {
  if (!node){
     return; // nothing to see there
  }

  if (node.value === deletedValue) {
     return; // this one is deleted, do not continue
  }

  if (!node.leftChild && !node.rightChild){
     console.log(node.value); //found not deleted leaf
     return;
  }

  trace(node.leftChild);
  trace(node.rightChild);
}