leetcode #173 Binary Search Tree Iterator
2015-11-24 04:23
357 查看
这题实际上是用BST做排序的算法,应该对BST做中序遍历。
中序遍历:左子树->根节点->右子树
先遍历到的元素用一个栈存起来,方便之后用到的时候把栈中的内容还回来。
程序中的buildStack()就是一个压栈的过程,如果一个节点有左子树,就将左子树压入栈。
Fight On!
中序遍历:左子树->根节点->右子树
先遍历到的元素用一个栈存起来,方便之后用到的时候把栈中的内容还回来。
程序中的buildStack()就是一个压栈的过程,如果一个节点有左子树,就将左子树压入栈。
[code]/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class BSTIterator { private TreeNode currNode; private Stack<TreeNode> stack; public BSTIterator(TreeNode root) { this.currNode = root; this.stack = new Stack<TreeNode>(); buildStack(root); } /** @return whether we have a next smallest number */ public boolean hasNext() { return(!stack.empty()); } /** @return the next smallest number */ public int next() { TreeNode top = stack.pop(); if(top.right!=null)buildStack(top.right); return top.val; } private void buildStack(TreeNode root) { if(root==null)return; while(root.left!=null){ stack.push(root); root=root.left; } stack.push(root); } } /** * Your BSTIterator will be called like this: * BSTIterator i = new BSTIterator(root); * while (i.hasNext()) v[f()] = i.next(); */
Fight On!
相关文章推荐
- [LeetCode157]Read N Characters Given Read4
- PHP获取本周的起止时间
- 我的作品02-1
- 【现身说法】玩游戏不如自己开发游戏
- 【现身说法】玩游戏不如自己开发游戏
- 我的作品02
- 学习Python(四)
- [LeetCode156] Binary Tree Upside Down
- 摄影的三条基本原则
- Ignoring unknown package filter 'build-tools-23.0.0-preview'Warning: The package filter removed all
- 并查集入门
- 机器学习笔记_ 数值最优化_3:KKT条件
- 219. Contains Duplicate II
- QapTcha 滑动验证码工具--工作原理分析
- UVA 11691 Allergy Test(状压dp)
- Git初始化设置
- [Javascript] Intro to Recursion
- 关于使用Github desktop Mac版的一些心得
- python之路第五篇之递归(进阶篇:续:经典例子剖析)
- UVA 11721 Instant View of Big Bang(负环)