您的位置:首页 > 编程语言 > Java开发

二叉排序树(java)

2017-01-20 19:39 337 查看
上一篇的二叉树遍历中代码其实我就是二叉排序树的写法,所谓二叉排序树基于树根为准,小于树根则置于左子树,大于树根置于右子树依次递归到结束。

class TreeNode {
int value;
TreeNode left_node;
TreeNode right_node;
public TreeNode(int value) {
this.value = value;
this.left_node = null;
this.right_node = null;
}
}

public class BinaryTree {
public TreeNode rootNode;

public void Add_Node_To_Tree(int value) {
if(rootNode == null) {
rootNode = new TreeNode(value);
return;
}
TreeNode currentNode = rootNode;
while (true) {
if(value < currentNode.value) {
if(currentNode.left_node == null) {
currentNode.left_node = new TreeNode(value);
return;
}
else {
currentNode = currentNode.left_node;
}
}
else {
if(currentNode.right_node == null) {
currentNode.right_node = new TreeNode(value);
return;
}
else {
currentNode = currentNode.right_node;
}
}
}
}

//中序遍历
public void InOrder(TreeNode node) {
if(node != null) {
InOrder(node.left_node);
System.out.print("[" + node.value + "]");
InOrder(node.right_node);
}
}

//前序遍历
public void PreOrder(TreeNode node) {
if(node != null) {
System.out.print("[" + node.value + "]");
PreOrder(node.left_node);
PreOrder(node.right_node);
}
}

//后序遍历
public void PostOrder(TreeNode node) {
if(node != null) {
PostOrder(node.left_node);
PostOrder(node.right_node);
System.out.print("[" + node.value + "]");
}
}

public static void main(String[] args) throws IOException {
int value;
BinaryTree tree = new BinaryTree();
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入数据,结束输入-1; \n");
while(true) {
value = Integer.parseInt(keyin.readLine());
if(value == -1)
break;
tree.Add_Node_To_Tree(value);
}
System.out.println("==================: ");
System.out.println("排序完成结果: \n");
tree.InOrder(tree.rootNode);
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: