📅  最后修改于: 2023-12-03 15:32:05.256000             🧑  作者: Mango
在Java中,树是一种非常常见的数据结构,它是由节点构成的层次结构。为了遍历树的所有节点,我们需要使用树的遍历算法。本文将介绍Java程序执行有序树遍历的方法。
树的遍历分为三种方式:
前序遍历先访问根,然后访问左子树,最后访问右子树;中序遍历先访问左子树,然后访问根,最后访问右子树;后序遍历先访问左子树,然后访问右子树,最后访问根。
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public void preorderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preorderTraversal(root.left);
preorderTraversal(root.right);
}
public void inorderTraversal(TreeNode root) {
if (root == null) {
return;
}
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}
public void postorderTraversal(TreeNode root) {
if (root == null) {
return;
}
postorderTraversal(root.left);
postorderTraversal(root.right);
System.out.print(root.val + " ");
}
以上三段代码分别实现了前序遍历、中序遍历和后序遍历。我们可以通过创建一个TreeNode
对象来测试这些方法的效果。
public static void main(String[] args) {
/*
1
/ \
2 3
/ \
4 5
*/
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
BinaryTree tree = new BinaryTree();
System.out.print("前序遍历:");
tree.preorderTraversal(root);
System.out.println();
System.out.print("中序遍历:");
tree.inorderTraversal(root);
System.out.println();
System.out.print("后序遍历:");
tree.postorderTraversal(root);
}
上面代码的输出结果如下:
前序遍历:1 2 4 5 3
中序遍历:4 2 5 1 3
后序遍历:4 5 2 3 1
以上就是Java程序执行有序树遍历的方法。在实际开发中,我们需要根据具体情况选择不同的遍历方式。如果需要逐层遍历树,我们可以使用广度优先搜索,也就是层序遍历。我们可以通过队列来实现。