代码如下,貌似都插入成功了?怎么遍历不出来?高手点拨,谢谢,送风
为什么只打印一个节点了?哪里问题,谢谢---------Node类------------
public class BTNode {
private char key;
private BTNode leftNode;
private BTNode rightNode;
public BTNode(char key,BTNode leftNode,BTNode rightNode){
this.key = key;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public BTNode(char key){
this(key,null,null);
} public char getKey() {
return key;
} public void setKey(char key) {
this.key = key;
} public BTNode getLeftNode() {
return leftNode;
} public void setLeftNode(BTNode leftNode) {
this.leftNode = leftNode;
} public BTNode getRightNode() {
return rightNode;
} public void setRightNode(BTNode rightNode) {
this.rightNode = rightNode;
}
}
---------Tree类------------
public class BinaryTree {
private BTNode root;
public BinaryTree(BTNode root){
this.root = root;
}
public BinaryTree(){
root = null;
}
public BTNode getRoot(){
return root;
}
/**
* search or visit node
*/
public static void visit(BTNode node){
System.out.println("访问 node : "+ node.getKey());
}
/**
* insert or visit node
*/
public static BTNode insert(BTNode node,char key){
if(node == null){
node = new BTNode(key);
}else if(key <= node.getKey()){
System.out.println("------left--------");
BTNode temp = node.getLeftNode();
temp = insert(node.getLeftNode(),key);
node = temp;
}else{
System.out.println("------right--------");
BTNode temp = node.getRightNode();
temp = insert(node.getRightNode(),key);
node = temp;
}
System.out.println("--------------"+node.getKey());
return node;
}
public void insert(char key){
root = insert(root,key);
}
public void buildTree( char [] key){
for ( int i=0;i<key. length ;i++){
insert(key[i]);
}
} /**
* previously order traversal the recursion method
*/
public static void preorder(BTNode node){
if(node != null){
visit(node);
preorder(node.getLeftNode());
preorder(node.getRightNode());
}
}
public static void main(String[] args){
BinaryTree bTree = new BinaryTree();
char[] key={'H','A','D','S','E'};
bTree.buildTree(key);
System.out.print(" Pre-Order:");
preorder(bTree.getRoot());
}
为什么只打印一个节点了?哪里问题,谢谢---------Node类------------
public class BTNode {
private char key;
private BTNode leftNode;
private BTNode rightNode;
public BTNode(char key,BTNode leftNode,BTNode rightNode){
this.key = key;
this.leftNode = leftNode;
this.rightNode = rightNode;
}
public BTNode(char key){
this(key,null,null);
} public char getKey() {
return key;
} public void setKey(char key) {
this.key = key;
} public BTNode getLeftNode() {
return leftNode;
} public void setLeftNode(BTNode leftNode) {
this.leftNode = leftNode;
} public BTNode getRightNode() {
return rightNode;
} public void setRightNode(BTNode rightNode) {
this.rightNode = rightNode;
}
}
---------Tree类------------
public class BinaryTree {
private BTNode root;
public BinaryTree(BTNode root){
this.root = root;
}
public BinaryTree(){
root = null;
}
public BTNode getRoot(){
return root;
}
/**
* search or visit node
*/
public static void visit(BTNode node){
System.out.println("访问 node : "+ node.getKey());
}
/**
* insert or visit node
*/
public static BTNode insert(BTNode node,char key){
if(node == null){
node = new BTNode(key);
}else if(key <= node.getKey()){
System.out.println("------left--------");
BTNode temp = node.getLeftNode();
temp = insert(node.getLeftNode(),key);
node = temp;
}else{
System.out.println("------right--------");
BTNode temp = node.getRightNode();
temp = insert(node.getRightNode(),key);
node = temp;
}
System.out.println("--------------"+node.getKey());
return node;
}
public void insert(char key){
root = insert(root,key);
}
public void buildTree( char [] key){
for ( int i=0;i<key. length ;i++){
insert(key[i]);
}
} /**
* previously order traversal the recursion method
*/
public static void preorder(BTNode node){
if(node != null){
visit(node);
preorder(node.getLeftNode());
preorder(node.getRightNode());
}
}
public static void main(String[] args){
BinaryTree bTree = new BinaryTree();
char[] key={'H','A','D','S','E'};
bTree.buildTree(key);
System.out.print(" Pre-Order:");
preorder(bTree.getRoot());
}
ls的朋友,我也发现了,问题是怎么建了?谢谢
public void insertNode(BTNode node, char key) {
if (node == null) {
root = new BTNode(key);
return;
}
char nodeKey = node.getKey();
if (key < nodeKey) {
BTNode lNode = node.getLeftNode();
if (lNode == null) {
node.setLeftNode(new BTNode(key));
} else {
insertNode(lNode, key);
}
} else {
BTNode rNode = node.getRightNode();
if (rNode == null) {
node.setRightNode(new BTNode(key));
} else {
insertNode(rNode, key);
}
} }
改为node.setLeftNode(temp);(左边)
或node.setRightNode(temp);(右边)
private BTNode root; public BinaryTree(BTNode root) {
this.root = root;
} public BinaryTree() {
root = null;
} public BTNode getRoot() {
return root;
} /**
* search or visit node
*/
public void visit(BTNode node) {
System.out.println("访问 node : " + node.getKey());
} /**
* insert or visit node
*/
public BTNode insert(BTNode node, char key) {
if (node == null) {
node = new BTNode(key);
} else if (key <= node.getKey()) {
System.out.println("------left--------");
BTNode temp = node.getLeftNode();
temp = insert(node.getLeftNode(), key);
node = temp; } else {
System.out.println("------right--------");
BTNode temp = node.getRightNode();
temp = insert(node.getRightNode(), key);
node = temp;
}
System.out.println("--------------" + node.getKey());
return node;
} public void insertNode(BTNode node, char key) {
if (node == null) {
root = new BTNode(key);
return;
}
char nodeKey = node.getKey();
if (key < nodeKey) {
BTNode lNode = node.getLeftNode();
if (lNode == null) {
node.setLeftNode(new BTNode(key));
} else {
insertNode(lNode, key);
}
} else {
BTNode rNode = node.getRightNode();
if (rNode == null) {
node.setRightNode(new BTNode(key));
} else {
insertNode(rNode, key);
}
} } public void insert(char key) {
insertNode(root, key);
} public void buildTree(char[] key) {
for (int i = 0; i < key.length; i++) {
insert(key[i]);
}
} /**
* previously order traversal the recursion method
*/ public void preorder(BTNode node) {
if (node != null) {
visit(node);
preorder(node.getLeftNode());
preorder(node.getRightNode());
}
} public static void main(String[] args) {
BinaryTree bTree = new BinaryTree();
char[] key = { 'H', 'A', 'D', 'S', 'E' };
bTree.buildTree(key);
System.out.print(" Pre-Order:");
bTree.preorder(bTree.getRoot());
}
}