【问题标题】:Binary Search Tree recursive add二叉搜索树递归添加
【发布时间】:2017-02-19 00:33:47
【问题描述】:

我正在尝试为我的 BST 进行递归添加。公共 add 方法接受一个 int 参数,私有方法接受相同的 int 和一个 Node。这是我到目前为止的代码

 public void add(int i) {

    add(i, root);

}

private void add(int i, Node n) {
    if (root==null){
        root=new Node(i);
    }

    if (i < n.element) {
        if (n.left != null) {
            add(i, n.left);
        } else {
            n.left = new Node(i);
        }
    } else if (i > n.element) {
        if (n.right != null) {
            add(i, n.right);
        } else {
            n.right = new Node(i);
        }
    }
}

我不断收到空指针,也尝试过调试,但我的逻辑中有一些我看不到的缺陷。

【问题讨论】:

标签: java recursion binary-search-tree


【解决方案1】:

当您的树为空 (root=null) 时,您正确地创建了一个新节点并将其分配给您的 root 变量。但这就是它应该做的一切。
因此:

if (root==null){
    root=new Node(i);
    return; // DONE!!
}

或者,如果你愿意:

if (root==null){
    root=new Node(i);
}
else if (i < n.element) {
....

【讨论】:

  • 认为它成功了,我对 print 方法的使用也是错误的,所以我不确定是哪一个成功了,但感谢你!
猜你喜欢
  • 2014-01-02
  • 2021-07-03
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多