二叉树前,中,后统一非递归版本(只改变顺序)
Posted 顾文繁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树前,中,后统一非递归版本(只改变顺序)相关的知识,希望对你有一定的参考价值。
先序遍历
vector<int> preorderTraversal(TreeNode* root)
if(!root) return ;
vector<int> result;
stack<TreeNode*> stk;
stk.push(root);
while(!stk.empty())
TreeNode* node = stk.top();
stk.pop();
if(node)
if(node -> right)
stk.push(node -> right);
if(node -> left)
stk.push(node -> left);
stk.push(node);
stk.push(nullptr);
else
result.push_back(stk.top()->val);
stk.pop();
return result;
中序遍历
vector<int> inorderTraversal(TreeNode* root)
if(!root) return ;
vector<int> result;
stack<TreeNode*> stk;
stk.push(root);
while(!stk.empty())
TreeNode* node = stk.top();
stk.pop();
if(node)
if(node -> right)
stk.push(node -> right);
stk.push(node);
stk.push(nullptr);
if(node -> left)
stk.push(node -> left);
else
result.push_back(stk.top()->val);
stk.pop();
return result;
后序遍历
vector<int> postorderTraversal(TreeNode* root)
if(!root) return ;
vector<int> result;
stack<TreeNode*> stk;
stk.push(root);
while(!stk.empty())
TreeNode* node = stk.top();
stk.pop();
if(node)
stk.push(node);
stk.push(nullptr);
if(node -> right)
stk.push(node -> right);
if(node -> left)
stk.push(node -> left);
else
result.push_back(stk.top()->val);
stk.pop();
return result;
以上是关于二叉树前,中,后统一非递归版本(只改变顺序)的主要内容,如果未能解决你的问题,请参考以下文章