2017-05-27 73 views
0

我有一个具有挑战性的任务来解决。我有一棵二叉树,像这样:根是11,11的孩子是5和8,5的孩子是13和12,8的右孩子是14.确定二叉树叶子是否为最大值的函数

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

我知道这必须是一个递归函数,但我真的不知道如何解决这个问题。在Python,Java,C或Pascal中的解释会很好,但如果有人能够给我一个提示如何解决这个问题,我已经很开心了。

谢谢:)

回答

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); 
} 

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