二叉排序树创建和遍历
二叉排序树:BST对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前的值小,右子节点的值比当前的值大.
添加代码块
采用的递归添加的。
public void add(Node node) {
if (node == null) {
return;
}
// 判断传入的结点的值和当前根节点的值的关系
if (node.value < this.value) {
// 如果当前节点左子节点为空,直接加进去
if (this.left == null) {
this.left = node;
} else {
this.left.add(node);
}
} else {
if (this.right == null) {// 如果现在要添加的值大于当前节点的值
this.right = node;
} else {
this.right.add(node);
}
}
}
添加步骤:
1:
2:
3:
4:
5:
…
package mzy.tree_d;
public class BinarySortTreeTest {
public static void main(String[] args) {
BinarySortTree bst = new BinarySortTree();
int[] arr = { 8, 5, 9, 11, 75, 1, 3, 29, 46 };
for (int i = 0; i < arr.length; i++) {
Node n = new Node(arr[i]);
bst.add(n);
}
bst.infixOrder();
}
}
//创建二叉排序树
class BinarySortTree {
private Node root;
// 添加节点
public void add(Node node) {
if (root == null) {
root = node;
} else {
root.add(node);
}
}
// 中序遍历
public void infixOrder() {
if (root == null) {
System.out.println("此树根为空");
return;
}
root.infixOrder();
}
}
//创建Node节点
class Node {
int value;
Node left;
Node right;
public Node(int value) {
this.value = value;
}
// 添加节点方法
// 递归形式添加节点
public void add(Node node) {
if (node == null) {
return;
}
// 判断传入的结点的值和当前根节点的值的关系
if (node.value < this.value) {
// 如果当前节点左子节点为空,直接加进去
if (this.left == null) {
this.left = node;
} else {
this.left.add(node);
}
} else {
if (this.right == null) {// 如果现在要添加的值大于当前节点的值
this.right = node;
} else {
this.right.add(node);
}
}
}
// 中序遍历树结构
public void infixOrder() {
if (this.left != null) {
this.left.infixOrder();
}
System.out.println(this);
if (this.right != null) {
this.right.infixOrder();
}
}
// 打印遍历
@Override
public String toString() {
return "Node [value=" + value + "]";
}
}