二叉树的非递归遍历
2016-05-03 16:14
323 查看
Pre Order Traverse
vector<int> preorderTraversal(TreeNode* root) { vector<int> res; std::stack<TreeNode*> temp; while (root || !temp.empty()) { while (root) { temp.push(root); res.push_back(root->val); root = root->left; } root = temp.top(); temp.pop(); root = root->right; } return res; }
In Order Traverse
vector<int> inorderTraversal(TreeNode* root) { vector<int> res; std::stack<TreeNode*> temp; while (root || !temp.empty()) { while (root) { temp.push(root); root = root->left; } root = temp.top(); temp.pop(); res.push_back(root->val); root = root->right; } return res; }
Post Order Traverse
vector<int> postorderTraversal(TreeNode* root) {vector<int> res;
std::stack<TreeNode*> temp;
while (root || !temp.empty()) {
while (root) {
temp.push(root);
res.insert(res.begin(),root->val);
root = root->right;
}
root = temp.top();
temp.pop();
root = root->left;
}
return res;
}
以上是我自己c++版本的实现
另附一篇比较详细的博客:http://www.cnblogs.com/dolphin0520/
相关文章推荐
- Learning to Rank中Pointwise关于PRank算法源码实现
- iOS NSIndexPath
- HDU 4052 Adding New Machine (线段树+离散化)
- 解决MySQL5.6出现"Using a password on the command line interface..."
- GDOI2016总结
- Android 分享到微信6.0后好友、朋友圈
- 验证码生成类
- 【转】如何分析解决Android ANR
- 2016年5月02日 - 精华
- axis2客户端调用服务器
- 练习三 1001
- 【VS开发】关于在CFormView中实现CListCtrl控件的注意事项
- MySQL 多表连接查询
- 第12期【江山代有才人出】5月刊
- redis的aof持久化深入解析
- Fast RCNN 训练自己数据集 (1编译配置)
- 重要的东西
- openwrt创建软件包
- JSTL 字符串长度判断并截取
- Java_Regex