【发布时间】:2020-09-25 07:26:01
【问题描述】:
class bTree {
public class Node {
Node left;
Node right;
int val;
Node () {}
Node (int val){
this.val=val;
}
}
Node root;
public void insert(int val){
if (root == null){
root = new Node(val);
} else {
Node current = root;
// If val less than parent node's val go left
if (val <= root.val){
if (root.left == null){
root.left = new Node(val);
} else {
insert(val);
}
}
// If val greater than parent node's val go right
else {
if (root.right == null){
root.right = new Node(val);
} else {
insert(val);
}
} // inner else ends
} // outer else ends
} // insert() ends
public void displayTree(Node root){
if (root.left != null){
displayTree(root.left);
}
System.out.print(root.val + " - ");
if (root.right != null){
displayTree(root.right);
}
}
public static void main(String[] args) {
bTree bt = new bTree();
bt.insert(10);
bt.insert(30);
bt.insert(4);
bt.insert(5);
bt.displayTree(bt.root);
}
}
我在尝试实现二叉搜索树时遇到了在其中插入值的问题。我在创建 Node 主类之前已经实现了它,但现在在主类(如 LinkedList)中嵌套一个 Node 类会使它复杂化。
public void insert(int val){
if (root == null){
root = new Node(val);
} else {
Node current = root;
在此位 current 始终获取 root 的值,这导致插入的项目不超过 3 个。我知道这个问题,但无法解决。对代码的任何重新设计将不胜感激。
【问题讨论】:
-
您可以将子树的根作为参数传递给您的
insert函数。 -
@Janez Kuhar @Abra 将
root的引用传递给insert()确实有效。谢谢。
标签: java data-structures binary-tree