Java实现:给定一棵二叉树,使用递归的方法实现二叉树的左右子树交换,并输出交换后的二叉树的先序遍历结果
时间: 2023-12-01 12:22:16 浏览: 69
好的,我可以帮你实现这个功能。以下是Java代码实现:
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public TreeNode invertTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
root.left = right;
root.right = left;
return root;
}
public void preOrderTraversal(TreeNode root) {
if (root == null) {
return;
}
System.out.print(root.val + " ");
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
public static void main(String[] args) {
Solution solution = new Solution();
TreeNode root = new TreeNode(4);
root.left = new TreeNode(2);
root.right = new TreeNode(7);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(3);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(9);
System.out.println("Before invert: ");
solution.preOrderTraversal(root);
solution.invertTree(root);
System.out.println("\nAfter invert: ");
solution.preOrderTraversal(root);
}
}
```
这里我们首先定义了一个`TreeNode`类来表示二叉树节点,然后定义了一个`Solution`类来实现二叉树的左右子树交换。`invertTree`方法使用递归的方式实现了二叉树左右子树的交换,返回交换后的二叉树根节点。`preOrderTraversal`方法实现了二叉树的先序遍历,用于输出交换后的二叉树的遍历结果。
在`main`方法中,我们创建了一个测试用的二叉树,并输出交换前后的遍历结果。
阅读全文