이진 검색 트리에 삽입 및 인쇄를 구현할 때. 첫 번째 루트 노드 만 출력합니다. 왜 도와 주시겠습니까? 바이너리 검색 트리의 기본 구현. 처음에는 학습을 시작하고 고급 항목으로 이동하지만 첫 번째 단계에서는 걸림돌이됩니다. 루트 노드에 노드를 추가하지 않는 것 같습니다.이진 검색 트리에 삽입 할 수 없습니다.
class bstrees{
class Node
{
int data;
Node left;
Node right;
public Node(int data)
{
this.data=data;
this.left=null;
this.right=null;
}
}
Node root;
bstrees(){root=null;}
public void insert(int data){
root=insert_node(root,data);
}
public Node insert_node(Node r,int n){
if(r==null){
Node n1=new Node(n);
//root=n1;
return n1 ;
}
else if(root.data<=n){
insert_node(root.right,n);
}
else{
insert_node(root.left,n);
}
return r;
}
public void print_t(){
print_t(root);
}
private void print_t(Node r){
//System.out.println(r);
if(r!=null){
// System.out.println(r.left);
// System.out.println(r.right);
print_t(r.left);
System.out.println(r.data+" ");
print_t(r.right);
}
}
}
public class BST_prac {
public static void main(String[] args) {
// TODO Auto-generated method stub
bstrees b1=new bstrees();
b1.insert(5);
b1.insert(1);
b1.print_t();
}
}
그것은 단지 트리에 값 1
삽입 호출에
첫눈에/테스트 코드조차 보이지 않으므로 먼저 null을 확인하십시오. [여기] (http://stackoverflow.com/questions/5560679/inserting-nodes-into-a) -binary-tree-in-java-question) –
Java 명명 규칙을 읽으십시오. 클래스 이름 시작 대문자. 당신은 abbreviate하지 않는다. (BinaryTree는 bstree보다 이해하기가 훨씬 쉽고 is not이다.) 당신은 SOME_CONSTANTS에 대해서만 _ char을 사용하지만 변수와 메소드 이름에는 사용하지 않는다. – GhostCat
그리고 다음 질문에 대해 : 우리가 당신을 도울 시간을 보내길 원한다. 그래서 당신은 소스 코드를 적절하게 포맷 할 시간을 보내시기 바랍니다. 그리고 마지막으로 ** 삽입에 관한 ** 두 가지 ** 공용 메소드를 갖는 것은 단순히 매우 혼란스러운 인터페이스입니다 (내가 처음에 잘못된 대답을했던 것처럼 보였을 것입니다). 문제는 : 당신의 코드는 ** 읽기 힘들다 **; 비록 그렇게 단순해야만합니다. 마지막으로 ** 관련 작업 후에 코드에 print 문을 넣기 만하면 쉽게 ** 디버깅 할 수 있습니다. 또는 ** 디버거 **를 실행하여. – GhostCat