Categorías
Algorithms Interview Java

LeetCode – Iterador de árbol de búsqueda binaria (Java)

Problema

Implemente un iterador sobre un árbol de búsqueda binario (BST). Su iterador se inicializará con el nodo raíz de una BST. Llamar a next () devolverá el siguiente número más pequeño en el BST. Nota: next () y hasNext () deben ejecutarse en un tiempo promedio de O (1) y usan la memoria O (h), donde h es la altura del árbol.

Solución Java

La clave para resolver este problema es comprender las características de BST. Aquí hay un ejemplo de BST.

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
 
public class BSTIterator {
	Stack<TreeNode> stack;
 
	public BSTIterator(TreeNode root) {
		stack = new Stack<TreeNode>();
		while (root != null) {
			stack.push(root);
			root = root.left;
		}
	}
 
	public boolean hasNext() {
		return !stack.isEmpty();
	}
 
	public int next() {
		TreeNode node = stack.pop();
		int result = node.val;
		if (node.right != null) {
			node = node.right;
			while (node != null) {
				stack.push(node);
				node = node.left;
			}
		}
		return result;
	}
}

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *