要实现树查询,需要先定义树的节点类,并在其中实现树的遍历算法。以下是一个简单的示例代码:

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个节点,然后分别使用前序遍历、中序遍历、后序遍历算法对树进行遍历,并输出遍历结果。

Java 树查询实现:节点类、遍历算法和示例代码

原文地址: https://www.cveoy.top/t/topic/mskV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录