2017-05-27 126 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); 
} 

搜索樹具有豐富的理論和比單一的答案更大。如果你願意,你可以更深入。享受:)