Closed. This question needs to be more focused。它当前不接受答案。
                        
                    
                
            
        
            
        
                
                    
                
            
                
                    想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                
                    2年前关闭。
            
        

    

我有一项艰巨的任务要解决。我有一棵这样的二叉树:根是11,11的孩子是5和8,5的孩子是13和12,8的右边的孩子是14。

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

我知道这必须是一个递归函数,但是我真的不知道如何解决这个问题。用Python,Java,C或Pascal进行解释会很好,但是如果有人可以给我一个提示来解决这个问题,我已经很高兴了。

谢谢 :)

最佳答案

该任务非常类似于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);
}


搜索树理论丰富,比单个答案还大。如果需要,您可以更深入。请享用 :)

关于java - 确定二叉树的叶子是否在路径中的最大值的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44219699/

10-11 20:05