用其实现
173. 二叉搜索树迭代器
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。
调用 next() 将返回二叉搜索树中的下一个最小的数。
注 :此部分内容不太懂,作为笔记后续再补充
代码实现:
package main
//Definition for a binary tree node.
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
type BSTIterator struct {
stack []*TreeNode
}
func Constructor(root *TreeNode) BSTIterator {
stack := make([]*TreeNode, 0)
res := BSTIterator{
stack:stack,
}
res.inoder(root)
return res
}
/** @return the next smallest number */
func (this *BSTIterator) Next() int {
size := len(this.stack)
var tmp *TreeNode
this.stack, tmp = this.stack[:size - 1], this.stack[size - 1]
return tmp.Val
}
/** @return whether we have a next smallest number */
func (this *BSTIterator) HasNext() bool {
return len(this.stack) > 0
}
func (this *BSTIterator) inoder(root *TreeNode) {
if root == nil {
return
}
this.inoder(root.Right)
this.stack = append(this.stack, root)
this.inoder(root.Left)
}
/**
* Your BSTIterator object will be instantiated and called as such:
* obj := Constructor(root);
* param_1 := obj.Next();
* param_2 := obj.HasNext();
*/
参考链接:https://blog.csdn.net/anakinsun/article/details/89578455
https://studygolang.com/articles/8420