gpt4 book ai didi

java - 向二叉树中插入一个元素

转载 作者:行者123 更新时间:2023-11-29 03:20:35 24 4
gpt4 key购买 nike

这是我对二进制 Node 类的实现:

public class BinaryNode{
int element;
BinaryNode left;
BinaryNode right;
BinaryNode(int theElement,BinaryNode lt,BinaryNode rt){
element=theElement;
left=lt;
right=rt;
}
BinaryNode(int theElement){
this(theElement,null,null);
}

}

这是我在 binaryTree 类中的插入方法

public class BinaryTree {
private BinaryNode root;

public BinaryTree(){
root= null;
}
BinaryTree(int nodeValue){
root=new BinaryNode(nodeValue);

}
public void insert(BinaryNode node,int x){
if(node==null){
node=new BinaryNode(x);
}
else if(node.element<x){
insert(node.left,x);
}
else if (node.element>x){
insert(node.right,x);
}
else
System.out.println("Duplicates not allowed");
}

我有两个问题。
1) 我怎样才能将元素插入到这个 BinaryTree 类中,从而创建一棵树。

public static void main (String args[]){
BinaryTree t=new BinaryTree();
t.insert(t.root,5);
}

但是在插入 5 之后,我如何调用插入方法来添加整数,例如 10,12,78,...

2) 另外,当我查看一些用于插入二叉树的代码时,我发现了这段代码。

/** 
Inserts the given data into the binary tree.
Uses a recursive helper.
*/
public void insert(int data) {
root = insert(root, data);
}


/**
Recursive insert -- given a node pointer, recur down and
insert the given data into the tree. Returns the new
node pointer (the standard way to communicate
a changed pointer back to the caller).
*/
private Node insert(Node node, int data) {
if (node==null) {
node = new Node(data);
}
else {
if (data <= node.data) {
node.left = insert(node.left, data);
}
else {
node.right = insert(node.right, data);
}
}

return(node); // in any case, return the new pointer to the caller
}

代码看起来和我的差不多,但为什么还要使用辅助方法 insert()?这样做的目的是什么?
有人可以解决帮助我理解这一点

最佳答案

在二叉树中插入一个元素应该只需要树和元素作为输入。树本身应该确定应该更新哪个节点。这是通过从根开始的递归函数实现的:这是作用于节点的辅助函数。

关于java - 向二叉树中插入一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com