数据结构与算法之交换二叉树左右子树

交换二叉树左右子树

数据结构与算法之交换二叉树左右子树

题目

思想

递归交换即可,前/中/后序皆可

代码实现

简洁版

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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45074341/article/details/126902416