173. 二叉搜索树迭代器(二叉搜索树+栈)
實(shí)現(xiàn)一個(gè)二叉搜索樹(shù)迭代器。你將使用二叉搜索樹(shù)的根節(jié)點(diǎn)初始化迭代器。
調(diào)用 next() 將返回二叉搜索樹(shù)中的下一個(gè)最小的數(shù)。
示例:
BSTIterator iterator = new BSTIterator(root);
iterator.next(); // 返回 3
iterator.next(); // 返回 7
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 9
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 15
iterator.hasNext(); // 返回 true
iterator.next(); // 返回 20
iterator.hasNext(); // 返回 false
提示:
next() 和 hasNext() 操作的時(shí)間復(fù)雜度是 O(1),并使用 O(h) 內(nèi)存,其中 h 是樹(shù)的高度。
你可以假設(shè) next() 調(diào)用總是有效的,也就是說(shuō),當(dāng)調(diào)用 next() 時(shí),BST 中至少存在一個(gè)下一個(gè)最小的數(shù)。
本質(zhì)上是二叉搜索樹(shù)和棧的應(yīng)用。二叉搜索樹(shù)右子樹(shù)的數(shù)一定大于父節(jié)點(diǎn)的數(shù),左子樹(shù)一定小于父節(jié)點(diǎn)的數(shù)。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的173. 二叉搜索树迭代器(二叉搜索树+栈)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 82. 删除排序链表中的重复元素 II(
- 下一篇: Hyperset(排序+二分)