Question: [Java] Find the solution that is not recursive. If you can't find it in a not recursive way, please DON'T resolve it Here is the
[Java] Find the solution that is not recursive. If you can't find it in a not recursive way, please DON'T resolve it
![[Java] Find the solution that is not recursive. If you can't find](https://dsd5zvtm8ll6.cloudfront.net/si.experts.images/questions/2024/09/66f4e1ec896be_65266f4e1ec26105.jpg)
Here is the code that needs to be implemented
import java.io.*; import java.util.*; public class BST { /** * Problem: Perform rotations on tree1 to make it equivalent to tree2. */ public static void problem(BST tree1, BST tree2) { // Implement me! } // --------------------------------------------------------------------- // Do not change any of the code below! private class Node { public Node left = null; public Node right = null; public Node parent = null; public int key; public Node(int key) { this.key = key; } } private Node root = null; public int getRootKey() { return root.key; } private Node find(int key) { for (Node cur = root; cur != null;) { if (key cur.key { cur = cur.right; } } return null; } // x y
// / \ / \ // a y => x c // / \ / \ // b c a b private void rotateL(Node xNode) { Node xPar = xNode.parent; boolean isRoot = xPar == null; boolean isLChild = !isRoot && xPar.left == xNode; Node yNode = xNode.right; Node beta = yNode.left; if (isRoot) root = yNode; else if (isLChild) xPar.left = yNode; else xPar.right = yNode; yNode.parent = xPar; yNode.left = xNode; xNode.parent = yNode; xNode.right = beta; if (beta != null) beta.parent = xNode; } // y x // / \ / \ // x c => a y // / \ / \ // a b b c private void rotateR(Node yNode) { Node yPar = yNode.parent; boolean isRoot = yPar == null; boolean isLChild = !isRoot && yPar.left == yNode; Node xNode = yNode.left; Node beta = xNode.right; if (isRoot) root = xNode; else if (isLChild) yPar.left = xNode; else yPar.right = xNode; xNode.parent = yPar; xNode.right = yNode; yNode.parent = xNode; yNode.left = beta; if (beta != null) beta.parent = yNode; } public void insert(int key) { if (root == null) { root = new Node(key); return;
} Node par = null; for (Node node = root; node != null;) { par = node; if (key node.key) { node = node.right; } else // key == node.key { // Nothing to do, because no value to update. return; } } // Create node and set pointers. Node newNode = new Node(key); newNode.parent = par; if (key stack = new Stack } return order; } public int[] getPreOrder() { if (root == null) return new int[] { }; Stack
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
