函数确定二进制树叶是否为路径中的最大值

时间:2017-05-27 17:20:58

标签: java python

我有一项具有挑战性的任务需要解决。我有一个二叉树,就像这个:根是11,11的孩子是5和8,5的孩子是13和12,8的右孩是14。

我必须编写一个查看所有叶子的函数,如果叶子是从根到叶子的路径中的最大值,则返回true,如果不是这样,则返回false。所以,例如对于叶子14,这显然是正确的,因为从根(11),有一个节点(5),14是这些节点中的最大值。

我知道这必须是一个递归函数,但我真的不知道如何解决这个问题。 Python,Java,C或Pascal中的解释会很棒,但如果有人能给我一个如何解决这个问题的提示,我会很高兴。

谢谢:)

1 个答案:

答案 0 :(得分:1)

此任务与binary search tree verification

非常相似

本文C中的代码:

bool isBST(struct TreeNode *node, int minKey, int maxKey) {
  if(node == NULL) return true;
  if(node->key < minKey || node->key > maxKey) return false;
  return isBST(node->left, minKey, node->key-1) && isBST(node->right, node->key+1, maxKey);
}

搜索树理论丰富,比单一答案更重要。如果你愿意,你可以更深入。享受:)