java代码 翻转二叉树
时间: 2023-10-11 14:07:00 浏览: 114
以下是一个Java代码示例,用于反转二叉树:
```java
// 递归方法
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) {
return null;
}
TreeNode tmp = root.right;
root.right = root.left;
root.left = tmp;
invertTree(root.left);
invertTree(root.right);
return root;
}
}
```
这段代码使用了递归的方法来翻转二叉树。首先,判断根节点是否为空,如果为空则直接返回。然后,我们交换当前节点的左子树和右子树。接着,递归地翻转当前节点的左子树和右子树。最后,返回翻转后的根节点。
另外,还有一种非递归的方法来翻转二叉树:
```java
// 迭代方法(使用队列)
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) {
return null;
}
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()) {
TreeNode tmp = queue.poll();
TreeNode left = tmp.left;
tmp.left = tmp.right;
tmp.right = left;
if(tmp.left != null) {
queue.add(tmp.left);
}
if(tmp.right != null) {
queue.add(tmp.right);
}
}
return root;
}
}
```
这段代码使用了迭代的方法来翻转二叉树。我们使用一个队列来存储待处理的节点。首先,将根节点放入队列中。然后,循环从队列中取出一个节点,并交换该节点的左子树和右子树。如果左子树不为空,则将其放入队列中等待后续处理。如果右子树不为空,则也将其放入队列中。最后,返回翻转后的根节点。
以上是两种常用的方法来翻转二叉树的Java代码实现。希望能对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [翻转二叉树java](https://blog.csdn.net/wenjinjie1/article/details/121528668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [point-to-offer-edition2:剑指offer第二版的java实现](https://download.csdn.net/download/weixin_42135462/18581906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文