算法-设计一个非平衡二叉树的镜像翻转程序

WP主题讨论 WP主题讨论 主题:1013 回复:2239

算法-设计一个非平衡二叉树的镜像翻转程序

灵芸 发布于 2017-08-21 字数 140 浏览 1011 回复 1

假设目前有一个非平衡的二叉树(左右叶子节点不相等),如何设计一个程序对找个二叉树做快速镜像翻转?保证节点之间的关系不变,且顺序不错乱。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

晚风撩人 2017-09-05 1 楼

//c++不太懂,我可以写一个java的

public class Node
{
private String value;
private Node left;
private Node right;

/**构造方法*/
public Node(String value){
    this.value = value;
}

public String getValue()
{
    return value;
}

public void setValue(String value)
{
    this.value = value;
}

public Node getLeft()
{
    return left;
}

public void setLeft(Node left)
{
    this.left = left;
}

public Node getRight()
{
    return right;
}

public void setRight(Node right)
{
    this.right = right;
}

/**
 * 前序遍历的方法
 * */
public static String preorderTraversal(Node n){
    if(n == null){
        return "";
    }else
    {
        return n.getValue()+preorderTraversal(n.getLeft())+preorderTraversal(n.getRight());
    }
}

/**
 * 镜像转换的方法
 * */
public static void Mapping(Node n){
    if(n != null){
        Node temp = n.getLeft();
        n.setLeft(n.getRight());
        n.setRight(temp);
        Mapping(n.getLeft());
        Mapping(n.getRight());
    }
}

public static void main(String arg[])
{
    Node n1=new Node("1");//创建一个简单的只有3个节点的二叉树
    Node n2=new Node("2");
    Node n3=new Node("3");
    n1.setLeft(n2);
    n1.setRight(n3);

    System.out.println(preorderTraversal(n1));//输出前序遍历
    Mapping(n1);//镜像转行
    System.out.println(preorderTraversal(n1));//输出转换以后的前序遍历

}

}