간단한 두 갈래 찾기 트리 구현
10225 단어 두 갈래 나무두 갈래 나무 찾기
/** * <p> * * </p> * * @author Vicky * @date 2015-8-10 */
public class BinarySearchTree {
private Node root;
private int num;//
private int index;//
public BinarySearchTree() {
super();
}
public BinarySearchTree(Node root) {
super();
this.root = root;
this.num++;
}
public Node getRoot() {
return root;
}
/** * * * @param node * @return */
public BinarySearchTree addNode(Node node) {
this.num++;
if (null == root) {
root = node;
return this;
}
addNode(node, root);
return this;
}
/** * * * @param node * @param parent */
private void addNode(Node node, Node parent) {
if (node.getVal() > parent.getVal()) {
if (null == parent.getRight()) {
parent.setRight(node);
} else {
addNode(node, parent.getRight());
}
} else if (node.getVal() < parent.getVal()) {
if (null == parent.getLeft()) {
parent.setLeft(node);
} else {
addNode(node, parent.getLeft());
}
} else {
return;
}
}
/** * */
public int[] inorderTraversal() {
if (this.num == 0) {
return null;
}
this.index = 0;
int[] vals = new int[this.num];
inorderTraversal(getRoot(), vals);
return vals;
}
/** * * * @param node * @param vals */
private void inorderTraversal(Node node, int[] vals) {
if (null == node) {
return;
}
inorderTraversal(node.getLeft(), vals);
vals[index++] = node.getVal();
inorderTraversal(node.getRight(), vals);
}
@Override
public String toString() {
return "BSTree [root=" + root + "]";
}
}
/** * <p> * * </p> * * @author Vicky * @date 2015-8-10 */
class Node {
private final int val;
private Node left;
private Node right;
public Node(int val) {
this(val, null, null);
}
public Node(int val, Node left, Node right) {
super();
this.val = val;
this.left = left;
this.right = right;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
public int getVal() {
return val;
}
@Override
public String toString() {
return "Node [left=" + left + ", right=" + right + ", val=" + val + "]";
}
}
테스트 클래스
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
/** * <p> * * </p> * * @author Vicky * @date 2015-8-10 */
public class BinarySearchTreeTest {
public static void main(String[] args) {
BinarySearchTree tree = buildTree();
int[] vals = tree.inorderTraversal();
System.out.println(Arrays.toString(vals));
for (int i = 0; i < 10; i++) {
addNode(tree);
vals = tree.inorderTraversal();
System.out.println(Arrays.toString(vals));
}
}
/** * * * @return */
public static BinarySearchTree buildTree() {
Random ran = new Random();
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < 20; i++) {
set.add(ran.nextInt(500));
}
BinarySearchTree tree = new BinarySearchTree();
Iterator<Integer> ite = set.iterator();
while (ite.hasNext()) {
tree.addNode(new Node(ite.next()));
}
return tree;
}
public static BinarySearchTree addNode(BinarySearchTree tree) {
Random ran = new Random();
tree.addNode(new Node(ran.nextInt(1000)));
return tree;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.