173. Binary Search Tree Iterator

173. Binary Search Tree Iterator

本题考的是使用stack去非递归的中序遍历二叉搜索树


/**
 * 本题考的是使用stack去非递归的中序遍历二叉搜索树
 *
 */
class BSTIterator {
    
    //Definition for a binary tree node.
    struct TreeNode {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    stack<TreeNode*>s;
    TreeNode* current = NULL;
    
public:
    BSTIterator(TreeNode *root) {
        current = root;
    }
    
    /** @return whether we have a next smallest number */
    bool hasNext() {
        return current != NULL || !s.empty();
    }
    
    /** @return the next smallest number */
    int next() {
        while (current) {
            s.push(current);
            current = current->left;
        }
        
        current = s.top();
        s.pop();
        int val = current->val;
        current = current->right;
        
        return val;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容