Java实现前序遍历、中序遍历和后序遍历。
时间: 2023-12-10 07:33:03 浏览: 42
二叉树的遍历方式有三种:前序遍历、中序遍历和后序遍历。Java实现这三种遍历方式的代码如下:
前序遍历:
```java
public void preOrder(TreeNode root) {
if (root != null) {
System.out.print(root.val + " ");
preOrder(root.left);
preOrder(root.right);
}
}
```
中序遍历:
```java
public void inOrder(TreeNode root) {
if (root != null) {
inOrder(root.left);
System.out.print(root.val + " ");
inOrder(root.right);
}
}
```
后序遍历:
```java
public void postOrder(TreeNode root) {
if (root != null) {
postOrder(root.left);
postOrder(root.right);
System.out.print(root.val + " ");
}
}
```
其中,TreeNode是二叉树的节点类,val表示节点的值,left和right分别表示左子树和右子树。
相关问题
java二叉树遍历前序中序后序层次
Java中二叉树的遍历方式包括前序遍历、中序遍历、后序遍历和层次遍历。下面是它们的介绍:
1. 前序遍历(Preorder Traversal):
前序遍历是指先访问根节点,然后按照先左后右的顺序递归地访问左子树和右子树。在Java中,前序遍历可以通过递归或使用栈来实现。
2. 中序遍历(Inorder Traversal):
中序遍历是指先按照左子树、根节点、右子树的顺序递归地访问二叉树。在Java中,中序遍历同样可以通过递归或使用栈来实现。
3. 后序遍历(Postorder Traversal):
后序遍历是指先按照左子树、右子树、根节点的顺序递归地访问二叉树。在Java中,后序遍历同样可以通过递归或使用栈来实现。
4. 层次遍历(Level Order Traversal):
层次遍历是指按照从上到下、从左到右顺序逐层访问二叉树的节点。在Java中,层次遍历可以通过使用队列来实现。
--相关问题:
1. 什么是二叉树的前序遍历?
2. 如何实现二叉树的中序遍历?
3. 二叉树的后序遍历是什么意思?
4. 如何实现二叉树的层次遍历?
Java 实现二叉搜索树根据前序遍历、中序遍历、后序遍历写csv文件
抱歉,我是一名语言模型AI,无法为您提供实际编程操作,但可以为您提供伪代码:
1. 定义二叉搜索树节点类
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
2. 实现二叉搜索树的构建方法
public TreeNode buildTree(int[] preorder, int[] inorder, int preStart, int preEnd, int inStart, int inEnd) {
if (preStart > preEnd) {
return null;
}
TreeNode root = new TreeNode(preorder[preStart]);
int index = inStart;
while (index <= inEnd && inorder[index] != root.val) {
index++;
}
int leftSize = index - inStart;
root.left = buildTree(preorder, inorder, preStart + 1, preStart + leftSize, inStart, index - 1);
root.right = buildTree(preorder, inorder, preStart + leftSize + 1, preEnd, index + 1, inEnd);
return root;
}
3. 实现二叉搜索树的遍历方法
// 前序遍历
public void preorder(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
list.add(root.val);
preorder(root.left, list);
preorder(root.right, list);
}
// 中序遍历
public void inorder(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
inorder(root.left, list);
list.add(root.val);
inorder(root.right, list);
}
// 后序遍历
public void postorder(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
postorder(root.left, list);
postorder(root.right, list);
list.add(root.val);
}
4. 将遍历结果写入csv文件
public void writeCsvFile(List<Integer> list, String filename) {
try {
FileWriter writer = new FileWriter(filename);
for (int val : list) {
writer.append(Integer.toString(val));
writer.append(',');
}
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
5. 主函数中调用上述方法
public static void main(String[] args) {
int[] preorder = {3, 9, 20, 15, 7};
int[] inorder = {9, 3, 15, 20, 7};
int[] postorder = {9, 15, 7, 20, 3};
Solution solution = new Solution();
TreeNode root = solution.buildTree(preorder, inorder, 0, preorder.length - 1, 0, inorder.length - 1);
List<Integer> preorderList = new ArrayList<>();
solution.preorder(root, preorderList);
solution.writeCsvFile(preorderList, "preorder.csv");
List<Integer> inorderList = new ArrayList<>();
solution.inorder(root, inorderList);
solution.writeCsvFile(inorderList, "inorder.csv");
List<Integer> postorderList = new ArrayList<>();
solution.postorder(root, postorderList);
solution.writeCsvFile(postorderList, "postorder.csv");
}
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)