2016-04-21 8 views
0
public static int mirror(BinaryNode<Integer> root) 
    { 

     if(root==null) 
     { 
      return 0; 
     } 
     else 
     { 
      root.setRight(root.getLeft()); 
      mirror(root.getLeft()); 
      mirror(root.getRight()); 
     } 
     return 0; 
    } 

Eingang 4.261.357 (Level Order Traversal)machen Symmetrie eines BinaryTree

 4 
    /\ 
    2 6 
/\/\ 
    1 3 5 7 

Ausgabe 4.221.111 (Level Order Traversal)

 4 
    /\ 
    2 2 
/\/\ 
    1 1 1 1 

Aber ich will links nach rechts spiegeln

 4 
    /\ 
    2 2 
/\/\ 
    1 3 3 1 

Wie kann ich diesen Code beheben?

+0

Was soll passieren, wenn der Baum eine Ebene tiefer ist? Und wenn in der letzten Ebene Knoten fehlen? – Meier

Antwort

0

Sie müssen beide Teile tauschen:

 temp = root.getLeft(); 
     root.setLeft(root.getRight()); 
     root.setRight(temp); 

     mirror(root.getLeft()); 
     mirror(root.getRight()); 
Verwandte Themen