File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed
src/main/java/com/eprogrammerz/examples/algorithm/trees Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .eprogrammerz .examples .algorithm .trees ;
2+
3+ import org .junit .Test ;
4+
5+ import java .util .ArrayList ;
6+ import java .util .Arrays ;
7+ import java .util .List ;
8+
9+ public class CartesianTree {
10+ private class Node {
11+ int val ;
12+ Node left ;
13+ Node right ;
14+ Node (int val ) {
15+ this .val = val ;
16+ }
17+ }
18+
19+ Node buildTree (List <Integer > traversal ) {
20+ int rootIdx = findRootIdx (traversal );
21+ if (rootIdx < 0 || rootIdx >= traversal .size ()) {
22+ return null ;
23+ }
24+
25+ Node root = new Node (traversal .get (rootIdx ));
26+ root .left = buildTree (traversal .subList (0 , rootIdx ));
27+ root .right = buildTree (traversal .subList (rootIdx + 1 , traversal .size ()));
28+ return root ;
29+ }
30+
31+ private int findRootIdx (List <Integer > traversal ) {
32+ int max = Integer .MIN_VALUE ;
33+ int idx = -1 ;
34+ for (int i = 0 ; i < traversal .size (); i ++) {
35+ if (traversal .get (i ) > max ) {
36+ max = traversal .get (i );
37+ idx = i ;
38+ }
39+ }
40+ return idx ;
41+ }
42+
43+ @ Test
44+ public void testBuildTree () {
45+ List <Integer > traversal = new ArrayList <>();
46+ traversal .add (1 );
47+ traversal .add (3 );
48+ traversal .add (7 );
49+ traversal .add (5 );
50+ Node root = buildTree (traversal );
51+ System .out .println (root );
52+ }
53+ }
You can’t perform that action at this time.
0 commit comments