赞
踩
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
中序遍历是一种二叉树遍历方式,按照“左根右”的顺序遍历二叉树节点。
对应先序遍历 根左右
对应后序遍历 左右根
先、中、后序遍历其实指的是遍历根节点的先后顺序
public class InorderTraversal { static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); inorderTraversalHelper(root, result); return result; } private void inorderTraversalHelper(TreeNode node, List<Integer> result) { if (node == null) { return; } inorderTraversalHelper(node.left, result); result.add(node.val); inorderTraversalHelper(node.right, result); } public static void main(String[] args) { // 示例用法 TreeNode root = new TreeNode(1); root.left = new TreeNode(4); root.right = new TreeNode(2); root.right.left = new TreeNode(3); InorderTraversal solution = new InorderTraversal(); List<Integer> result = solution.inorderTraversal(root); System.out.println(result); // 输出:[4, 1, 3, 2] } }
/** * 先序遍历 * 根->左->右 */ public class PreorderTraversal { static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); preorderTraversalHelper(root, result); return result; } private void preorderTraversalHelper(TreeNode node, List<Integer> result) { if (node == null) { return; } result.add(node.val); preorderTraversalHelper(node.left,result); preorderTraversalHelper(node.right,result); } public static void main(String[] args) { // 示例用法 TreeNode root = new TreeNode(1); root.left = new TreeNode(4); root.left.left = new TreeNode(5); root.left.left.right = new TreeNode(8); root.left.right = new TreeNode(6); root.right = new TreeNode(2); root.right.left = new TreeNode(3); PreorderTraversal solution = new PreorderTraversal(); List<Integer> result = solution.preorderTraversal(root); System.out.println(result); // 输出:[1, 3, 2] } }
/** * 后序遍历 * 左->右->根 */ public class PostorderTraversal { static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } public List<Integer> postorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); postorderTraversalHelper(root, result); return result; } private void postorderTraversalHelper(TreeNode node, List<Integer> result) { if (node == null) { return; } postorderTraversalHelper(node.left, result); postorderTraversalHelper(node.right, result); result.add(node.val); } public static void main(String[] args) { // 示例用法 TreeNode root = new TreeNode(1); root.left = new TreeNode(4); root.right = new TreeNode(2); root.right.left = new TreeNode(3); PostorderTraversal solution = new PostorderTraversal(); List<Integer> result = solution.postorderTraversal(root); System.out.println(result); // 输出:[1, 3, 2] } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。