zoukankan      html  css  js  c++  java
  • Java for LeetCode 173 Binary Search Tree Iterator

    Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.

    Calling next() will return the next smallest number in the BST.

    Note: next() and hasNext() should run in average O(1) time and uses O(h) memory, where h is the height of the tree.

    解题思路:

    其实就是按照中序遍历的顺序出列,有两种实现思路:

    一、构造BST的时候直接预处理下,构造出一条按照中序遍历的list,每次读取list的元素即可。

    二、不进行预处理,按照中序遍历的思路使用Stack动态的进行处理

    这里我们实现思路二:

    public class BSTIterator {
    	private Stack<TreeNode> stack=new Stack<TreeNode>();
    
    	public BSTIterator(TreeNode root) {
    		if (root != null)
    			pushLeft(root);
    	}
    
    	/** @return whether we have a next smallest number */
    	public boolean hasNext() {
    		return !stack.isEmpty();
    	}
    
    	/** @return the next smallest number */
    	public int next() {
    		TreeNode top = stack.peek();
    		stack.pop();
    		if(top.right!=null)
    		pushLeft(top.right);
    		return top.val;
    	}
    
    	public void pushLeft(TreeNode root) {
    		stack.push(root);
    		TreeNode rootTemp = root.left;
    		while (rootTemp != null) {
    			stack.push(rootTemp);
    			rootTemp = rootTemp.left;
    		}
    	}
    }
    
  • 相关阅读:
    你了解幻读吗?
    http面试准备
    DNS域名解析过程,域名的认识
    ajax实现用户登陆,退出,java做后端
    serialize()与serializeArray()
    jquery中Json操作
    jquery字符串操作
    理解jQuery的$.extend与$.fn.extend
    HTML之间互相传参
    解决topjui中工具栏按钮删除刷新从属表
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4556367.html
Copyright © 2011-2022 走看看