在二叉树中返回用于顺序遍历的迭代器,可以通过以下步骤实现:
这样,通过调用 hasNext() 和 next() 方法,就可以实现对二叉树的顺序遍历。
以下是一个示例的实现代码(使用Java语言):
import java.util.Stack;
public class BinaryTreeIterator {
private Stack<TreeNode> stack;
public BinaryTreeIterator(TreeNode root) {
stack = new Stack<>();
if (root != null) {
stack.push(root);
pushLeftNodes(root.left);
}
}
public boolean hasNext() {
return !stack.isEmpty();
}
public int next() {
TreeNode node = stack.pop();
if (node.right != null) {
stack.push(node.right);
pushLeftNodes(node.right.left);
}
return node.val;
}
private void pushLeftNodes(TreeNode node) {
while (node != null) {
stack.push(node);
node = node.left;
}
}
public void remove() {
// 实现删除当前节点的逻辑
}
}
在这个示例中,TreeNode 是二叉树节点的定义,包含了节点的值(val)、左子节点(left)和右子节点(right)。
这种迭代器的实现方式适用于任意类型的二叉树,可以方便地进行顺序遍历操作。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云