@@ -667,65 +667,47 @@ protected static class TreePrinter {
667
667
public static <T extends Comparable <T >> String getString (BinarySearchTree <T > tree ) {
668
668
if (tree .root == null )
669
669
return "Tree has no nodes." ;
670
- return getString (tree .root , "" , true );
670
+ return getStringRoot (tree .root , "" , true );
671
671
}
672
672
673
- private static <T extends Comparable <T >> String getString (Node <T > node , String prefix , boolean isTail ) {
674
- Scope scope = BranchCoverage .beginScope ("BinarySearchTree.TreePrinter.getString" , new String [] {
675
- "entry-point" ,
676
- "parent-exists" ,
677
- "right-side" ,
678
- "parent-doesn't-exist" ,
679
- "has-left-or-right-children" ,
680
- "has-left-children" ,
681
- "has-right-children" ,
682
- "has-children" ,
683
- "has-following-number-of-children" ,
684
- "has-multiple-children" ,
685
- "get-tree-string" ,
686
- });
687
-
688
- scope .reached ("entry-point" );
673
+ private static <T extends Comparable <T >> String getStringRoot (Node <T > node , String prefix , boolean isTail ) {
674
+ StringBuilder builder = new StringBuilder ();
675
+ builder .append (prefix + (isTail ? "└── " : "├── " ) + node .id + "\n " );
676
+ List <Node <T >> children = new ArrayList <Node <T >>(2 );
677
+ if (node .lesser != null || node .greater != null ) {
678
+ children = new ArrayList <Node <T >>(2 );
679
+ if (node .lesser != null )
680
+ children .add (node .lesser );
681
+ if (node .greater != null )
682
+ children .add (node .greater );
683
+ if (children .size () == 2 )
684
+ builder .append (getString (node .lesser , prefix + " " , false ));
685
+ builder .append (getString (children .get (children .size () - 1 ), prefix + (isTail ? " " : "│ " ), true ));
686
+ }
687
+
688
+ return builder .toString ();
689
+ }
689
690
691
+ private static <T extends Comparable <T >> String getString (Node <T > node , String prefix , boolean isTail ) {
690
692
StringBuilder builder = new StringBuilder ();
691
693
692
- if (node .parent != null ) {
693
- scope .reached ("parent-exists" );
694
- String side = "left" ;
695
- if (node .equals (node .parent .greater )) {
696
- scope .reached ("right-side" );
697
- side = "right" ;
698
- }
699
- builder .append (prefix + (isTail ? "└── " : "├── " ) + "(" + side + ") " + node .id + "\n " );
700
- } else {
701
- scope .reached ("parent-doesn't-exist" );
702
- builder .append (prefix + (isTail ? "└── " : "├── " ) + node .id + "\n " );
703
- }
704
- List <Node <T >> children = null ;
694
+ String side = "left" ;
695
+ if (node .equals (node .parent .greater ))
696
+ side = "right" ;
697
+ builder .append (prefix + (isTail ? "└── " : "├── " ) + "(" + side + ") " + node .id + "\n " );
698
+
699
+ List <Node <T >> children = new ArrayList <Node <T >>(2 );
705
700
if (node .lesser != null || node .greater != null ) {
706
- scope .reached ("has-left-or-right-children" );
707
701
children = new ArrayList <Node <T >>(2 );
708
- if (node .lesser != null ) {
709
- scope .reached ("has-left-children" );
702
+ if (node .lesser != null )
710
703
children .add (node .lesser );
711
- }
712
- if (node .greater != null ) {
713
- scope .reached ("has-right-children" );
704
+ if (node .greater != null )
714
705
children .add (node .greater );
715
- }
706
+ if (children .size () == 2 )
707
+ builder .append (getString (node .lesser , prefix + "│ " , false ));
708
+ builder .append (getString (children .get (children .size () - 1 ), prefix + (isTail ? " " : "│ " ), true ));
716
709
}
717
- if (children != null ) {
718
- scope .reached ("has-children" );
719
- for (int i = 0 ; i < children .size () - 1 ; i ++) {
720
- scope .reached ("has-following-number-of-children" );
721
- builder .append (getString (children .get (i ), prefix + (isTail ? " " : "│ " ), false ));
722
- }
723
- if (children .size () >= 1 ) {
724
- scope .reached ("has-multiple-children" );
725
- builder .append (getString (children .get (children .size () - 1 ), prefix + (isTail ? " " : "│ " ), true ));
726
- }
727
- }
728
- scope .reached ("get-tree-string" );
710
+
729
711
return builder .toString ();
730
712
}
731
713
}
0 commit comments