java二叉树左右子树互换
时间: 2024-12-28 08:23:52 浏览: 13
### Java 中实现二叉树左右子树交换
为了实现在 Java 中对二叉树的左右子树进行互换,可以采用递归方法来遍历整个树并交换每个节点的左孩子和右孩子。下面提供了一个具体的代码示例:
```java
// 定义二叉树节点类
class TreeNode {
int val;
TreeNode left, right;
public TreeNode(int item) {
this.val = item;
left = right = null;
}
}
public class BinaryTreeSwap {
// 交换函数
void swapEveryLevel(TreeNode node) {
if (node == null) {
return;
}
// 交换当前节点的孩子
TreeNode temp = node.left;
node.left = node.right;
node.right = temp;
// 对左右子树分别调用此函数继续向下一层做同样的操作
if (node.left != null) {
swapEveryLevel(node.left);
}
if (node.right != null) {
swapEveryLevel(node.right);
}
}
// 打印先序遍历用于验证结果正确性
void preOrder(TreeNode node) {
if (node == null) {
return;
}
System.out.print(node.val + " ");
preOrder(node.left);
preOrder(node.right);
}
}
```
上述代码展示了如何创建一个简单的 `TreeNode` 类以及编写 `swapEveryLevel()` 函数来进行层次上的左右子树互换[^1]。
通过以上方式可以在不改变原有数据结构的前提下完成二叉树各层之间左右孩子的全面转换工作。此外还提供了辅助性的先序打印功能以便于测试效果。
阅读全文