Java 树查询实现:节点类、遍历算法和示例代码
要实现树查询,需要先定义树的节点类,并在其中实现树的遍历算法。以下是一个简单的示例代码:
public class TreeNode {
private int value;
private TreeNode left;
private TreeNode right;
public TreeNode(int value) {
this.value = value;
this.left = null;
this.right = null;
}
public int getValue() {
return value;
}
public TreeNode getLeft() {
return left;
}
public TreeNode getRight() {
return right;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public void setRight(TreeNode right) {
this.right = right;
}
public void preOrderTraversal() {
System.out.print(value + ' ');
if (left != null) {
left.preOrderTraversal();
}
if (right != null) {
right.preOrderTraversal();
}
}
public void inOrderTraversal() {
if (left != null) {
left.inOrderTraversal();
}
System.out.print(value + ' ');
if (right != null) {
right.inOrderTraversal();
}
}
public void postOrderTraversal() {
if (left != null) {
left.postOrderTraversal();
}
if (right != null) {
right.postOrderTraversal();
}
System.out.print(value + ' ');
}
}
以上代码实现了一个简单的二叉树节点类,并在其中实现了前序遍历、中序遍历、后序遍历算法。接下来可以创建一个树类,并在其中添加节点并进行遍历操作:
public class Tree {
private TreeNode root;
public Tree() {
root = null;
}
public void add(int value) {
TreeNode newNode = new TreeNode(value);
if (root == null) {
root = newNode;
} else {
TreeNode current = root;
while (true) {
if (value < current.getValue()) {
if (current.getLeft() == null) {
current.setLeft(newNode);
break;
} else {
current = current.getLeft();
}
} else {
if (current.getRight() == null) {
current.setRight(newNode);
break;
} else {
current = current.getRight();
}
}
}
}
}
public void preOrderTraversal() {
if (root != null) {
root.preOrderTraversal();
System.out.println();
}
}
public void inOrderTraversal() {
if (root != null) {
root.inOrderTraversal();
System.out.println();
}
}
public void postOrderTraversal() {
if (root != null) {
root.postOrderTraversal();
System.out.println();
}
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.add(5);
tree.add(3);
tree.add(7);
tree.add(1);
tree.add(4);
tree.add(6);
tree.add(8);
tree.preOrderTraversal(); // 输出: 5 3 1 4 7 6 8
tree.inOrderTraversal(); // 输出: 1 3 4 5 6 7 8
tree.postOrderTraversal(); // 输出: 1 4 3 6 8 7 5
}
}
以上代码创建了一个二叉树,并添加了7个节点,然后分别使用前序遍历、中序遍历、后序遍历算法对树进行遍历,并输出遍历结果。
原文地址: https://www.cveoy.top/t/topic/mskV 著作权归作者所有。请勿转载和采集!