用Java实现使用递归算法对一颗满二叉树(如下示例)完成以下任务。 4 2 7 1 3 6 9 1)输出该二叉树; 2)对该二叉树进行前序、中序、后序遍历; 3)翻转这棵二叉树。
时间: 2024-09-23 21:04:30 浏览: 41
Java实现二叉树的建立、计算高度与递归输出操作示例
5星 · 资源好评率100%
在Java中,我们可以创建一个`Node`类表示二叉树节点,并实现递归算法来处理满二叉树的各种操作。首先,我们定义`Node`:
```java
class Node {
int data;
Node left, right;
Node(int item) {
data = item;
left = right = null;
}
}
```
然后,我们可以编写递归函数来完成各个任务:
1. **输出二叉树**(层次遍历)
```java
void printLevelOrder(Node node) {
if (node == null)
return;
Queue<Node> queue = new LinkedList<>();
queue.add(node);
while (!queue.isEmpty()) {
Node temp = queue.poll();
System.out.print(temp.data + " ");
if (temp.left != null)
queue.add(temp.left);
if (temp.right != null)
queue.add(temp.right);
}
System.out.println();
}
```
2. **前序遍历**
```java
void preOrder(Node node) {
if (node == null)
return;
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
}
```
3. **中序遍历**
```java
void inOrder(Node node) {
if (node == null)
return;
inOrder(node.left);
System.out.print(node.data + " ");
inOrder(node.right);
}
```
4. **后序遍历**
```java
void postOrder(Node node) {
if (node == null)
return;
postOrder(node.left);
postOrder(node.right);
System.out.print(node.data + " ");
}
```
5. **翻转二叉树**(先序遍历反转左右子树)
```java
Node flipTree(Node root) {
if (root == null)
return null;
// Reverse left subtree
Node temp = root.left;
root.left = flipTree(root.right);
// Reverse right subtree
root.right = flipTree(temp);
return root;
}
```
阅读全文