【问题标题】:Binary Search Tree Recursion二叉搜索树递归
【发布时间】:2014-01-02 15:18:06
【问题描述】:

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

所以基本上这个问题的设置将是(我认为):

公共节点查找器(节点根,int max,int min){};

【问题讨论】:

  • “这是我到目前为止的代码,这就是我卡住的地方”通常应该是这样。现在你的思路还没有离开车站……
  • 我在想我会做一个 if 语句来检查左右孩子是否都在范围内,如果是这样返回 null (基本上什么都不做)然后从那里有 2 个 if 语句。第一个 if 语句:检查左孩子是否是范围,如果是,请访问它并使用左孩子再次递归调用程序。第二个 if 语句:除了使用右孩子之外,与第一个完全相同。除了我知道我的逻辑不完整并且我缺少步骤

标签: recursion binary-search-tree tree-traversal


【解决方案1】:

创建一个函数“check”,递归定义为

    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。

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2017-05-08
    • 2013-10-24
    相关资源
    最近更新 更多