我有一项具有挑战性的任务需要解决。我有一个二叉树,就像这个:根是11,11的孩子是5和8,5的孩子是13和12,8的右孩是14。
我必须编写一个查看所有叶子的函数,如果叶子是从根到叶子的路径中的最大值,则返回true,如果不是这样,则返回false。所以,例如对于叶子14,这显然是正确的,因为从根(11),有一个节点(5),14是这些节点中的最大值。
我知道这必须是一个递归函数,但我真的不知道如何解决这个问题。 Python,Java,C或Pascal中的解释会很棒,但如果有人能给我一个如何解决这个问题的提示,我会很高兴。
谢谢:)
答案 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);
}
搜索树理论丰富,比单一答案更重要。如果你愿意,你可以更深入。享受:)