当前位置: 面试刷题>> 二叉树翻转 (经典算法题500道)
### 题目描述补充
**题目:二叉树翻转**
给定一棵二叉树,请编写一个函数来翻转这棵二叉树,即交换每个节点的左右子树。翻转后,原树的左子树变为右子树,原树的右子树变为左子树。
**示例**:
输入的二叉树如下:
```
4
/ \
2 7
/ \ / \
1 3 6 9
```
翻转后的二叉树应为:
```
4
/ \
7 2
/ \ / \
9 6 3 1
```
### PHP 示例代码
```php
class TreeNode {
public $val;
public $left;
public $right;
function __construct($val = 0, $left = null, $right = null) {
$this->val = $val;
$this->left = $left;
$this->right = $right;
}
}
function invertTree($root) {
if ($root === null) {
return null;
}
// 交换当前节点的左右子树
$temp = $root->left;
$root->left = $root->right;
$root->right = $temp;
// 递归翻转左子树和右子树
invertTree($root->left);
invertTree($root->right);
return $root;
}
```
### Python 示例代码
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def invertTree(root):
if root is None:
return None
# 交换当前节点的左右子树
root.left, root.right = root.right, root.left
# 递归翻转左子树和右子树
invertTree(root.left)
invertTree(root.right)
return root
```
### JavaScript 示例代码
```javascript
function TreeNode(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right)
}
function invertTree(root) {
if (root === null) {
return null;
}
// 交换当前节点的左右子树
let temp = root.left;
root.left = root.right;
root.right = temp;
// 递归翻转左子树和右子树
invertTree(root.left);
invertTree(root.right);
return root;
}
```
**码小课网站中有更多相关内容分享给大家学习**,包括但不限于数据结构与算法、编程技巧、面试准备等,欢迎访问码小课网站获取更多学习资源。