二叉搜索树递归-我需要使用setLeft和right吗?

问题描述 投票:0回答:2

我已经创建了一个节点类,并且在二叉搜索树类中,我需要使用insert方法来插入节点。因此,我创建了一个新节点,并检查根是否为空,如果根为空,则该节点成为根节点。如果root不为null,则需要创建并调用一个从root开始并递归调用getLeft或getRight的递归方法。我只是在想,因为在我可以调用getLeft或getRight之前,确实需要先设置左右节点吗?如果是这样,我将在哪里使用setLeft正确?是插入节点方法还是递归方法?

java recursion binary-search-tree
2个回答
0
投票
class Node {
  Node left;
  Node right;
  Object data;

  public void insert(Object data) {
    // decide whether it goes to the left or to the right. 
    // assume the left:
    if (left != null) {
      left.insert(data);
    } else {
      left = new Node(data);
    }
  }
}

0
投票

您可以尝试这样插入:

Node root;

class Node {
    Item data;
    Node left;
    Node right;

    public Node(Item e) {
        data = e;
    }
}

public void insert(Item item) {
    root = insert(root, item);
}

private Node insert(Node node, Item item) {
    if (node== null) {
        return new Node(item);
    } else if (item.compareTo(node.data) == 0) {
        return node;
    } else if (item.compareTo(node.data) < 0) {
        node.right = insert(node.right, item);
        return node;
    } else {
        node.left = insert(node.left, item);
        return node;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.