package Ġquestions Ċ Ċ import Ġ_ utils . Use Comment As Documentation Ċ import Ġquestions . common . TreeNode Ċ import Ġkotlin . test . assertTrue Ċ Ċ /** Ċ Ġ* ĠGiven Ġan Ġarray Ġof Ġintegers Ġpre order , Ġwhich Ġrepresents Ġthe Ġpre order Ġtraversal Ġof Ġa ĠB ST Ġ( i . e ., Ġbinary Ġsearch Ġtree ), Ċ Ġ* Ġconstruct Ġthe Ġtree Ġand Ġreturn Ġits Ġroot . Ċ Ġ* ĠA Ġpre order Ġtraversal Ġof Ġa Ġbinary Ġtree Ġdisplays Ġthe Ġvalue Ġof Ġthe Ġnode Ġfirst , Ċ Ġ* Ġthen Ġtra ver ses Ġ` Node . left `, Ġthen Ġtra ver ses Ġ` Node . right `. Ċ Ġ* Ċ Ġ* Ġ[ Source ]( https :// leetcode . com / problems / construct - binary - search - tree - from - pre order - traversal /) Ċ Ġ*/ Ċ @ Use Comment As Documentation Ċ private Ġfun Ġb st From Pre order ( pre order : ĠInt Array ): ĠTreeNode ? Ġ{ ĊĠĠĠ Ġval Ġnode Ġ= ĠTreeNode ( pre order [ 0 ]) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. pre order . last Index ) Ġ{ ĊĠĠĠĠĠĠĠ ĠaddTo B ST ( node , Ġpre order [ i ]) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnode Ċ } Ċ Ċ private Ġfun ĠaddTo B ST ( root : ĠTreeNode , Ġvalue : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( value Ġ< Ġroot .` val `) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root . left Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . left Ġ= ĠTreeNode ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo B ST ( root . left !! , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġ> Ġroot .` val `) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root . right Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . right Ġ= ĠTreeNode ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo B ST ( root . right !! , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// assets . leetcode . com / uploads / 2 0 1 9 / 0 3 / 0 6 / 1 2 6 6 . png ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġb st From Pre order ( int ArrayOf ( 8 , Ġ 5 , Ġ 1 , Ġ 7 , Ġ 1 0 , Ġ 1 2 )) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠTreeNode . from ( array Of ( 8 , Ġ 5 , Ġ 1 0 , Ġ 1 , Ġ 7 , Ġnull , Ġ 1 2 )) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual . is Same As ( expected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }