交换二叉树左右子树
题目
思想
递归交换即可,前/中/后序皆可
代码实现
简洁版
public TreeNode swapLeftAndRightNode(TreeNode root) {
if(root!=null){
swapLeftAndRightNode(root.left);
swapLeftAndRightNode(root.right);
TreeNode temp=root.left;
root.left=root.right;
root.right=temp;
}
}
重构版
/**
* 交换左右子树
*
* @param root 根节点
* @return 交换后的新树
*/
public TreeNode swapLeftAndRightNode(TreeNode root) {
if (root != null) {
swapLeftAndRightNode(root.left);
swapLeftAndRightNode(root.right);
swap(root);
}
return root;
}
private void swap(TreeNode root) {
if (root != null) {
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
}
}