给定一棵二叉树,使用Java递归的方法实现二叉树的左右子树交换,并输出交换后的二叉树的先序遍历结果。
时间: 2023-10-31 10:06:20 浏览: 83
以下是Java递归实现二叉树左右子树交换的代码:
```java
import java.util.*;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class Solution {
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);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
// 输出交换前的先序遍历结果
System.out.println("Before swap: ");
preOrderTraversal(root);
// 交换二叉树的左右子树
swapTree(root);
// 输出交换后的先序遍历结果
System.out.println("\nAfter swap: ");
preOrderTraversal(root);
}
public static void swapTree(TreeNode root) {
if (root == null) {
return;
}
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
swapTree(root.left);
swapTree(root.right);
}
public static void preOrderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
}
```
运行上述代码,可以得到以下输出结果:
```
Before swap:
1 2 4 5 3 6 7
After swap:
1 3 7 6 2 5 4
```
其中,`TreeNode` 类表示二叉树的节点,`val` 表示节点的值,`left` 和 `right` 分别表示节点的左子树和右子树。`swapTree` 方法用于递归地交换二叉树的左右子树,`preOrderTraversal` 方法用于递归地进行先序遍历,并输出遍历结果。在 `main` 方法中,我们构造了一个二叉树,交换其左右子树,并输出交换前后的先序遍历结果。
阅读全文