Java 不能';t在二进制树中插入值
在此位中,当前始终获取根的值,这导致插入的项目不超过3个。我知道这个问题,但无法回避。如果对代码进行任何重新设计,我们将不胜感激。在您的代码中,您没有在Java 不能';t在二进制树中插入值,java,data-structures,binary-tree,Java,Data Structures,Binary Tree,在此位中,当前始终获取根的值,这导致插入的项目不超过3个。我知道这个问题,但无法回避。如果对代码进行任何重新设计,我们将不胜感激。在您的代码中,您没有在insert()方法中传递Node的引用来跟踪您在当前树中的节点位置 目前,您只能插入3项,因为对于3项,没有使用insert(val)的递归,但是在3项之后,您使用insert调用的递归,并且由于您没有传递当前节点位置,因此出现了此问题 以下是在二叉树中插入的工作示例: public void insert(int val){
insert()
方法中传递Node
的引用来跟踪您在当前树中的节点位置
目前,您只能插入3项,因为对于3项,没有使用insert(val)
的递归,但是在3项之后,您使用insert
调用的递归,并且由于您没有传递当前节点位置,因此出现了此问题
以下是在二叉树中插入的工作示例:
public void insert(int val){
if (root == null){
root = new Node(val);
} else {
Node current = root;
类bTree{
节根;
公共类节点{
左淋巴结;
节点权;
int-val;
节点(){}
节点(int-val){
这个.val=val;
}
}
公共void插入(节点currnode,int val){
if(currnode==null){
根=新节点(val);
返回;
}
if(val)您可以将子树的根作为参数传递给insert
函数。@Janez Kuhar@Abra将root
的引用传递给insert()
确实有效。谢谢。将root
传递给insert()
成功了!这也有助于我的其他有关OOP的查询。非常感谢。很高兴知道这对您有帮助
public void insert(int val){
if (root == null){
root = new Node(val);
} else {
Node current = root;
class bTree {
Node root;
public class Node {
Node left;
Node right;
int val;
Node () {}
Node (int val){
this.val=val;
}
}
public void insert(Node currnode, int val){
if(currnode == null) {
root = new Node(val);
return;
}
if(val <= currnode.val) {
if(currnode.left == null) {
currnode.left = new Node(val);
} else {
insert(currnode.left, val);
}
} else {
if(currnode.right == null) {
currnode.right = new Node(val);
} else {
insert(currnode.right, val);
}
}
}
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(bt.root,10);
bt.insert(bt.root,30);
bt.insert(bt.root,4);
bt.insert(bt.root,5);
bt.displayTree(bt.root);
}
}