二叉树左右子树交换(JAVA)

递归实现:

基本思想:

- 交换左右子树

- 对左子树进行递归交换

- 符右子树进行递归交换

递归实现

package a11; 

public class SwapTree { 


    public static void main(String args[]) { 

        Node root = buildTree();

        System.out.println("反转之前==============");

        inOrderVisit(root); 

        ExchangeLeftRight( root);

        System.out.println();

        System.out.println("反转之后=============="); 

        inOrderVisit(root); 

    } 


    class Node { 


        int data = 0; 

        Node left = null; 

        Node right = null; 

    }   


    public static Node buildTree() { 

      SwapTree s=new SwapTree();

    Node root = s.new Node(); 

        root.data = 1; 


        Node temp = s.new Node(); 

        temp.data = 2; 

        root.left = temp; 


        temp = s.new Node(); 

        temp.data = 3; 

        root.right = temp; 


        temp = s.new Node(); 

        temp.data = 4; 

        root.right.right = temp; 

        temp = s.new Node(); 

        temp.data = 5; 

        root.left.right = temp; 


        temp = s.new Node(); 

        temp.data = 6; 

        root.left.right.right = temp; 


        return root; 

    } 


    public static void inOrderVisit(Node root) { 

        if (root == null) 

            return; 

        inOrderVisit(root.left); 

        System.out.print(root.data); 

        inOrderVisit(root.right); 

    } 


    public static void ExchangeLeftRight(Node node) {

        if(node == null)//节点为空 则返回

            return ;

        if(node.left==null&&node.right==null){

        }

        else{//交换左右孩子

            Node temp = node.left;

            node.left = node.right;

            node.right = temp;

        }


        ExchangeLeftRight(node.right);//对右子树进行交换操作

}


原文有配图,点这

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,941评论 0 2
  • /*【程序21】 * 作者 南枫题目:求1+2!+3!+...+20!的和 1. 程序分析:此程序只是把累加变成了...
    HUC南枫阅读 458评论 0 0
  • 一. Java基础部分.................................................
    wy_sure阅读 3,846评论 0 11
  • 魔力咒语: “我原谅所有曾经用任何方式,伤害过我的人,包括这世和任何一世。我请求所有我曾经用任何方式伤害过的人原谅...
    简单而快乐着阅读 752评论 0 0
  • 花还是那束花, 只是有些枯萎了, 这是属于我的心香一瓣, 你的鲜活已种在我的心里, 永不凋零 已经拥有 便是天长地久
    娥儿阅读 249评论 0 0