2013-12-15 169 views
-2

给定二叉搜索树的根节点,我试图创建一个递归搜索,其中找到了给定最大和最小范围内的所有节点,但是在最少量的访问中。二元搜索树递归

所以本质上是建立这个问题将是(我认为):

公共节点取景器(节点根,INT最大,INT分钟){};

+1

“这里是我到目前为止的代码,这是我卡住的地方”通常是这样。现在你的思路还没有离开车站呢... – Floris

+0

我在想我只是做一个if语句来检查左右儿童是否都不在范围内,如果是的话返回null(实质上什么也不做)然后从那里有2个if语句。 1st if语句:如果访问它,检查左边的孩子是否是范围,并使用左边的孩子递归地调用程序。第二条如果陈述:除了使用正确的孩子之外,完全相同。除了我知道我的逻辑不完整,我缺少步骤 – user2251001

回答

0

创建这是递归定义

check(Node x){ 
    if(x.right.elm()>min&&x.right.elm()<max){ 
     check(x.right); 
    } 
    else if(x.right.elm()>max){ 
     check(x.right.left);  
    else if(x.right.elm()<min){ 
     check(x.right.right); 
    } 
    if(x.left.elm()>min&&x.left.elm()<max){ 
     check(x.left); 
    } 
    else if(x.left.elm()>max){ 
     check(x.left.left);  
    else if(x.left.elm()<min){ 
     check(x.left.right); 
    } 
    } 

另外一个更简单的代码,你可以创建两个功能check_right和check_left功能“检查”。