二叉树
前序中序后序遍历,是指根节点的顺序
importjava.util.LinkedList;importjava.util.Queue;publicclassBinaryTreeTraversal{// ===== 二叉树节点定义 =====staticclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intval){this.val=val;}}// ===== 创建一棵示例二叉树 =====// 1// / \// 2 3// / \// 4 5staticTreeNodebuildTree(){TreeNoderoot=newTreeNode(1);root.left=newTreeNode(2);root.right=newTreeNode(3);root.left.left=newTreeNode(4);root.left.right=newTreeNode(5);returnroot;}// ===== 1. 前序遍历:根 → 左 → 右 =====staticvoidpreorder(TreeNoderoot){if(root==null)return;System.out.print(root.val+" ");preorder(root.left);preorder(root.right);}// ===== 2. 中序遍历:左 → 根 → 右 =====staticvoidinorder(TreeNoderoot){if(root==null)return;inorder(root.left);System.out.print(root.val+" ");inorder(root.right);}// ===== 3. 后序遍历:左 → 右 → 根 =====staticvoidpostorder(TreeNoderoot){if(root==null)return;postorder(root.left);postorder(root.right);System.out.print(root.val+" ");}// ===== 4. 层序遍历(BFS) =====staticvoidlevelOrder(TreeNoderoot){if(root==null)return;Queue<TreeNode>queue=newLinkedList<>();queue.offer(root);while(!queue.isEmpty()){TreeNodenode=queue.poll();System.out.print(node.val+" ");if(node.left!=null){queue.offer(node.left);}if(node.right!=null){queue.offer(node.right);}}}// ===== main 方法测试 =====publicstaticvoidmain(String[]args){TreeNoderoot=buildTree();System.out.print("前序遍历:");preorder(root);System.out.println();System.out.print("中序遍历:");inorder(root);System.out.println();System.out.print("后序遍历:");postorder(root);System.out.println();System.out.print("层序遍历:");levelOrder(root);System.out.println();}}