给定一个不对称满二叉树若修改节点的值使其变为对称二叉树请问该如何修改用Java代码演示一下
时间: 2024-02-11 08:08:23 浏览: 23
以下是Java代码实现:
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class Solution {
public void makeSymmetric(TreeNode root) {
if (root == null) {
return;
}
makeSymmetricHelper(root.left, root.right);
}
private void makeSymmetricHelper(TreeNode left, TreeNode right) {
if (left == null && right == null) {
return;
}
if (left != null && right != null) {
if (left.val != right.val) {
left.val = right.val;
}
makeSymmetricHelper(left.left, right.right);
makeSymmetricHelper(left.right, right.left);
} else if (left != null) {
right = new TreeNode(left.val);
makeSymmetricHelper(left.left, right.right);
makeSymmetricHelper(left.right, right.left);
} else {
left = new TreeNode(right.val);
makeSymmetricHelper(left.left, right.right);
makeSymmetricHelper(left.right, right.left);
}
}
}
```
其中,`makeSymmetric`方法为入口,`makeSymmetricHelper`方法为递归实现。在`makeSymmetricHelper`方法中,首先判断左右子节点是否为空,如果都为空,则直接返回;如果都不为空,则比较左右子节点的值是否相等,如果不相等,则将左子节点的值修改为右子节点的值;然后,分别递归对左右子节点的左右子节点进行操作;如果左子节点为空,右子节点不为空,则将左子节点赋值为右子节点的值,并递归对左右子节点进行操作;如果右子节点为空,左子节点不为空,则将右子节点赋值为左子节点的值,并递归对左右子节点进行操作。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)