为什么只能输出5个数

发布于 2021-11-25 06:54:26 字数 968 浏览 495 评论 3

package com.BinaryTree;


public class BinaryTreeDemo {

private Node root;
public void addNode(int data){
if(root==null)
root = new Node(data);
else{
root.add(data);
}
}
public void printNode(){
if(root!=null){
root.print();
}
}
class Node{
private int data;
private Node left;
private Node right;
public Node(int data) {
this.data = data;
}
public void add(int data){
if(this.data>data)
if(this.left==null){
this.left = new Node(data);
}
else{
this.left.add(data);
}else if(this.data<=data){
if(this.right==null){
this.right = new Node(data);
}
}else{
this.right.add(data);
}
}
//中序遍历
public void print(){
if(this.left!=null){
this.left.print();
}
System.out.print(this.data+"->");
if(this.right!=null){
this.right.print();
}
}
}
}


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

反目相谮 2021-11-30 21:47:06

谢谢,已解决!

韬韬不绝 2021-11-30 12:22:47

确实是你ifelse造成的,下面是修正的,其实你是两个大判断,但是你最后一个else匹配到你else if你需要加括号明确

if (this.data > data) {
if (this.left == null) {
this.left = new Node(data);
} else {
this.left.add(data);
}
} else if (this.data <= data) {
if (this.right == null) {
this.right = new Node(data);
} else {
this.right.add(data);
}
}

尐偏执 2021-11-25 16:32:27

add方法里面 写if-else 就把自己绕进去了。。。

public void add(int data) { if (this.data > data) if (this.left == null) { this.left = new Node(data);
        } else { this.left.add(data);
        } if(this.data<=data){ if(this.right==null){ this.right = new Node(data);
        }else{ this.right.add(data);
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文