当前位置:实例文章 » JAVA Web实例» [文章]JAVA二刷-Day14 | 144.二叉树的前序遍历, 145.二叉树的后序遍历, 94.二叉树的中序遍历

JAVA二刷-Day14 | 144.二叉树的前序遍历, 145.二叉树的后序遍历, 94.二叉树的中序遍历

发布人:shili8 发布时间:2025-03-02 15:04 阅读次数:0

**JAVA二刷-Day14 | 二叉树的前序、后序、中序遍历**

在本篇文章中,我们将讨论如何实现二叉树的前序、后序和中序遍历。这些遍历是通过递归或迭代方式来访问二叉树中的每个节点。

###1. 前序遍历前序遍历是指先访问根节点,然后再访问左子树和右子树。

java// Definition for a binary tree node.
public class TreeNode {
 int val;
 TreeNode left;
 TreeNode right;
 TreeNode(int x) { val = x; }
}

class Solution {
 public List preorderTraversal(TreeNode root) {
 List res = new ArrayList<>();
 if (root == null) return res;

 // 前序遍历的顺序是根节点 -> 左子树 -> 右子树 res.add(root.val);
 res.addAll(preorderTraversal(root.left));
 res.addAll(preorderTraversal(root.right));

 return res;
 }
}


###2. 后序遍历后序遍历是指先访问左子树和右子树,然后再访问根节点。

javaclass Solution {
 public List postorderTraversal(TreeNode root) {
 List res = new ArrayList<>();
 if (root == null) return res;

 // 后序遍历的顺序是左子树 -> 右子树 -> 根节点 res.addAll(postorderTraversal(root.left));
 res.addAll(postorderTraversal(root.right));
 res.add(root.val);

 return res;
 }
}


###3. 中序遍历中序遍历是指先访问左子树,然后再访问根节点和右子树。

javaclass Solution {
 public List inorderTraversal(TreeNode root) {
 List res = new ArrayList<>();
 if (root == null) return res;

 // 中序遍历的顺序是左子树 -> 根节点 -> 右子树 res.addAll(inorderTraversal(root.left));
 res.add(root.val);
 res.addAll(inorderTraversal(root.right));

 return res;
 }
}


### 总结在本篇文章中,我们讨论了二叉树的前序、后序和中序遍历。这些遍历是通过递归或迭代方式来访问二叉树中的每个节点。我们提供了示例代码和注释,帮助读者理解这些遍历的实现细节。

###代码注释* `preorderTraversal`方法:实现前序遍历。
* `postorderTraversal`方法:实现后序遍历。
* `inorderTraversal`方法:实现中序遍历。
* `TreeNode`类:定义二叉树节点结构。

### 示例代码
javapublic class Main {
 public static void main(String[] args) {
 // 创建一个示例二叉树 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);

 // 前序遍历 System.out.println("前序遍历:");
 List preorder = preorderTraversal(root);
 for (int i : preorder) {
 System.out.print(i + " ");
 }
 System.out.println();

 // 后序遍历 System.out.println("后序遍历:");
 List postorder = postorderTraversal(root);
 for (int i : postorder) {
 System.out.print(i + " ");
 }
 System.out.println();

 // 中序遍历 System.out.println("中序遍历:");
 List inorder = inorderTraversal(root);
 for (int i : inorder) {
 System.out.print(i + " ");
 }
 }

 public static List preorderTraversal(TreeNode root) {
 // ...
 }

 public static List postorderTraversal(TreeNode root) {
 // ...
 }

 public static List inorderTraversal(TreeNode root) {
 // ...
 }
}


### 最终结果前序遍历:12453后序遍历:45231中序遍历:42513

相关标签:java开发语言
其他信息

其他资源

Top