java中带有getter和setter的二叉树
我试图通过下面的示例1创建二叉树,其中树是在没有getter和setter的情况下生成的。我想用geeters和setter创建它,但我一直坚持使用递归。如何使用/内部setter调用递归函数?这是密码。。 p、 美国树类java中带有getter和setter的二叉树,java,binary-tree,Java,Binary Tree,我试图通过下面的示例1创建二叉树,其中树是在没有getter和setter的情况下生成的。我想用geeters和setter创建它,但我一直坚持使用递归。如何使用/内部setter调用递归函数?这是密码。。 p、 美国树类 公共类TreeF{ 树根; 公共空白插入(int值){ if(root==null){ 根=新树(值); 返回; } 树电流=根; if(值
公共类TreeF{
树根;
公共空白插入(int值){
if(root==null){
根=新树(值);
返回;
}
树电流=根;
if(值
将插入(值)
更改为当前。插入(值)
要实现递归,您需要更改一个(或多个)参数,以便在一些递归调用后转到停止条件
在代码中,调用了属于同一对象的方法insert
。而不是它的左/右子树。换句话说,递归永远不会结束,因为您不访问子子树
public class Tree {
private int data;
private Tree left;
private Tree right;
public Tree (int data) {
this.data=data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Tree getLeft() {
return left;
}
public void setLeft(Tree left) {
this.left = left;
}
public Tree getRight() {
return right;
}
public void setRight(Tree right) {
this.right = right;
}
public void insert(int value) {
if (value < getData()) {
if (getLeft() == null) {
setLeft(new Tree(value));
} else {
getLeft().insert(value);
}
} else {
if (getRight() == null) {
setRight(new Tree(value));
} else {
getLeft().insert(value);
}
}
}
}
公共类树{
私有int数据;
私家树左;
私家树权;
公共树(int数据){
这个。数据=数据;
}
公共int getData(){
返回数据;
}
公共无效设置数据(整数数据){
这个数据=数据;
}
公共树getLeft(){
左转;
}
公共void setLeft(树左){
this.left=左;
}
公共树getRight(){
返还权;
}
公共无效设置权限(树权限){
这个。右=右;
}
公共空白插入(int值){
if(值
您不需要当前
字段或根
。下面是您的insert
方法,它大大简化了演示过程
public class Tree {
final int data;
Tree left;
Tree right;
public Tree(int value) {
data = value;
}
public void insert(int value) {
if (value < data) {
if (left == null) {
left = new Tree(value);
} else {
left.insert(value);
}
} else {
if (right == null) {
right = new Tree(value);
} else {
right.insert(value);
}
}
}
}
公共类树{
最终int数据;
左树;
树权;
公共树(int值){
数据=价值;
}
公共空白插入(int值){
如果(值<数据){
if(left==null){
左=新树(值);
}否则{
左。插入(值);
}
}否则{
if(right==null){
右=新树(值);
}否则{
右。插入(值);
}
}
}
}
当我将insert(值)更改为current.insert(值)时,我在类型树中收到消息create method insert(int)。。我已经在PasteBin中粘贴了我的树类,那么您不需要为TreeF创建新类。我将更新答案并将代码粘贴到问题中,而不是粘贴到pastebin中
public class Tree {
final int data;
Tree left;
Tree right;
public Tree(int value) {
data = value;
}
public void insert(int value) {
if (value < data) {
if (left == null) {
left = new Tree(value);
} else {
left.insert(value);
}
} else {
if (right == null) {
right = new Tree(value);
} else {
right.insert(value);
}
}
}
}