您的位置:首页 > 其它

二叉树的非递归遍历

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: