2
回答
为什么只能输出5个数
开发十年,就只剩下这套Java开发体系了   

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();
}
}
}
}




package com.BinaryTree;



public class BinaryTree {


public static void main(String[] args) {
// TODO Auto-generated method stub
BinaryTreeDemo bt = new BinaryTreeDemo();
bt.addNode(23);
bt.addNode(3);
bt.addNode(2);
bt.addNode(13);
bt.addNode(90);
bt.addNode(80);//只能添加五个??
bt.printNode();
}

//输入结果2->3->13->23->90->
}

举报
共有2个答案 最后回答: 3年前
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);
        }
    }
}

确实是你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);
}
}

--- 共有 1 条评论 ---
酷呐么踏踏谢谢,已解决! 3年前 回复
顶部