@@ -24,34 +24,30 @@ class BinarySearchTree {
2424 /// - If there is, move to that node and repeat these steps.
2525 /// - If there is not, add that node as the left property.
2626 BinarySearchTree ? insert (num value) {
27- final newNode = Node (value);
28- final currentRoot = root;
29-
30- if (currentRoot == null ) {
31- root = newNode;
32- return this ;
27+ if (root case final root? ) {
28+ return _insertRecursive (value, root);
3329 }
30+ root = Node (value);
31+ return this ;
32+ }
3433
35- BinarySearchTree ? insertHelper (Node <num > node) {
36- if (value < node.value) {
37- if (node.left == null ) {
38- node.left = newNode;
39- return this ;
40- }
41- return insertHelper (node.left! );
34+ BinarySearchTree ? _insertRecursive (num value, Node <num > node) {
35+ if (value < node.value) {
36+ if (node.left == null ) {
37+ node.left = Node (value);
38+ return this ;
4239 }
43- if (value > node.value) {
44- if (node.right == null ) {
45- node.right = newNode;
46- return this ;
47- }
48- return insertHelper (node.right ! ) ;
40+ return _insertRecursive (value, node.left ! );
41+ }
42+ if (value > node.value) {
43+ if (node.right == null ) {
44+ node.right = Node (value);
45+ return this ;
4946 }
50- //value == node.value (value already there)
51- return null ;
47+ return _insertRecursive (value, node.right! );
5248 }
53-
54- return insertHelper (currentRoot) ;
49+ //value == node.value (value already there)
50+ return null ;
5551 }
5652
5753 /// Pseudocode (Iteratively or Recursively):
@@ -67,14 +63,14 @@ class BinarySearchTree {
6763 /// - If there is, move to that node and repeat these steps.
6864 /// - If there is not, we're done searching.
6965 bool find (num value) {
70- bool findHelper (Node <num >? node) {
71- if (node == null ) return false ;
72- if (value < node.value) return findHelper (node.left);
73- if (value > node.value) return findHelper (node.right);
74- return true ; //value == node.value (value has found)
75- }
66+ return _findRecursive (value, root);
67+ }
7668
77- return findHelper (root);
69+ bool _findRecursive (num value, Node <num >? node) {
70+ if (node == null ) return false ;
71+ if (value < node.value) return _findRecursive (value, node.left);
72+ if (value > node.value) return _findRecursive (value, node.right);
73+ return true ; //value == node.value (value has found)
7874 }
7975}
8076
0 commit comments