博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode – Refresh – Binary Tree Iterator
阅读量:5807 次
发布时间:2019-06-18

本文共 1353 字,大约阅读时间需要 4 分钟。

It is similar to use stack for BST inorder traversal.

So do the same thing : 

1. Get stack to store right branchs (include current node).

2. When you pop the top node, remember to push all the right sub branches again. Otherwise, it will cause right's left branches missed from result

 

1 /** 2  * Definition for binary tree 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class BSTIterator {11 private:12     stack
s;13 public:14 void initialNodes(TreeNode *root) {15 while (root) {16 s.push(root);17 root = root->left;18 }19 }20 BSTIterator(TreeNode *root) {21 initialNodes(root);22 }23 24 /** @return whether we have a next smallest number */25 bool hasNext() {26 return !s.empty();27 }28 29 /** @return the next smallest number */30 int next() {31 TreeNode *tmp = s.top();32 s.pop();33 if (tmp->right) {34 initialNodes(tmp->right);35 }36 return tmp->val;37 }38 };39 40 /**41 * Your BSTIterator will be called like this:42 * BSTIterator i = BSTIterator(root);43 * while (i.hasNext()) cout << i.next();44 */

 

转载于:https://www.cnblogs.com/shuashuashua/p/4346167.html

你可能感兴趣的文章
四、配置开机自动启动Nginx + PHP【LNMP安装 】
查看>>
LNMP一键安装
查看>>
SQL Server数据库概述
查看>>
Linux 目录结构及内容详解
查看>>
startx命令--Linux命令应用大词典729个命令解读
查看>>
华为3026c交换机配置tftp备份命令
查看>>
Oracle命令导入dmp文件
查看>>
OCP读书笔记(24) - 题库(ExamD)
查看>>
Http、TCP/IP协议与Socket之间的区别(转载)
查看>>
解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
查看>>
.net excel利用NPOI导入oracle
查看>>
vrpie在Visio Studio 中无法调试的问题
查看>>
第六课:数据库的基本工具
查看>>
关于二叉树重构的思索
查看>>
$_SERVER['SCRIPT_FLENAME']与__FILE__
查看>>
skynet实践(8)-接入websocket
查看>>
系统版本判断
查看>>
关于Css选择器优先级
查看>>
My97DatePicker 日历插件
查看>>
0603 学术诚信与职业道德
查看>>