@@ -462,11 +462,23 @@ protected boolean validateNode(Node<T> node) {
462
462
*
463
463
* @return breath first search sorted array representing the tree.
464
464
*/
465
- public T [] getBFS () {
465
+ public T [] getBFS () {
466
+ return getBFS (this .root , this .size );
467
+ }
468
+
469
+ /**
470
+ * Get an array representation of the tree in breath first search order.
471
+ *
472
+ * @param start rooted node
473
+ * @param size of tree rooted at start
474
+ *
475
+ * @return breath first search sorted array representing the tree.
476
+ */
477
+ public static <T extends Comparable <T >> T [] getBFS (Node <T > start , int size ) {
466
478
Queue <Node <T >> queue = new ArrayDeque <Node <T >>();
467
479
T [] values = (T []) new Comparable [size ];
468
480
int count = 0 ;
469
- Node <T > node = root ;
481
+ Node <T > node = start ;
470
482
while (node != null ) {
471
483
values [count ++] = node .id ;
472
484
if (node .lesser != null )
@@ -493,13 +505,28 @@ public T[] getLevelOrder() {
493
505
/**
494
506
* Get an array representation of the tree in-order.
495
507
*
496
- * @return in-order sorted array representing the tree.
508
+ * @param order of search
509
+ *
510
+ * @return order sorted array representing the tree.
497
511
*/
498
512
public T [] getDFS (DepthFirstSearchOrder order ) {
513
+ return getDFS (order , this .root , this .size );
514
+ }
515
+
516
+ /**
517
+ * Get an array representation of the tree in-order.
518
+ *
519
+ * @param order of search
520
+ * @param start rooted node
521
+ * @param size of tree rooted at start
522
+ *
523
+ * @return order sorted array representing the tree.
524
+ */
525
+ public static <T extends Comparable <T >> T [] getDFS (DepthFirstSearchOrder order , Node <T > start , int size ) {
499
526
Set <Node <T >> added = new HashSet <Node <T >>(2 );
500
527
T [] nodes = (T []) new Comparable [size ];
501
528
int index = 0 ;
502
- Node <T > node = root ;
529
+ Node <T > node = start ;
503
530
while (index < size && node != null ) {
504
531
Node <T > parent = node .parent ;
505
532
Node <T > lesser = (node .lesser != null && !added .contains (node .lesser )) ? node .lesser : null ;
@@ -617,7 +644,7 @@ protected Node(Node<T> parent, T id) {
617
644
*/
618
645
@ Override
619
646
public String toString () {
620
- return "id =" + id + " parent=" + ((parent != null ) ? parent .id : "NULL" ) + " lesser="
647
+ return "id=" + id + " parent=" + ((parent != null ) ? parent .id : "NULL" ) + " lesser="
621
648
+ ((lesser != null ) ? lesser .id : "NULL" ) + " greater=" + ((greater != null ) ? greater .id : "NULL" );
622
649
}
623
650
}
0 commit comments