给定一棵二叉树,使用递归的方法实现二叉树的左右子树交换,并输出交换后的二叉树的先序遍历结果。Java
时间: 2023-10-31 13:06:20 浏览: 174
好的,下面是用 Java 实现递归地交换二叉树左右子树,并输出交换后的二叉树的先序遍历结果的代码:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public 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);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
// 交换左右子树
invertTree(root);
// 输出交换后的二叉树的先序遍历结果
List<Integer> preorder = preorderTraversal(root);
System.out.println(preorder);
}
public static TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode temp = root.left;
root.left = invertTree(root.right);
root.right = invertTree(temp);
return root;
}
public static List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if (root == null) {
return res;
}
res.add(root.val);
res.addAll(preorderTraversal(root.left));
res.addAll(preorderTraversal(root.right));
return res;
}
}
```
运行结果为`[1, 3, 7, 6, 2, 5, 4]`,说明交换后的二叉树的先序遍历结果是正确的。
阅读全文