/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
vector<int> vec;
if(!root){
return vec;
}
vec.push_back(root->val);
s.push(root);
while(!s.empty()){
TreeNode *pNode = s.top();
if(pNode->left){
vec.push_back(pNode->left->val);
s.push(pNode->left);
pNode->left = NULL;
}else{
s.pop();
if(pNode->right){
vec.push_back(pNode->right->val);
s.push(pNode->right);
}
}
}
return vec;
}
/* 要使用到map
vector<int> preorderTraversal(TreeNode* root){
stack<TreeNode*> s;
vector<int> vec;
unordered_map<TreeNode*, bool> map;
if(!root){
return vec;
}
s.push(root);
vec.push_back(root->val);
while(!s.empty()){
TreeNode* node = s.top();
if(node->left && !map[node->left]){
map[node->left] = true;
vec.push_back(node->left->val);
s.push(node->left);
}else{
s.pop();
if(node->right && !map[node->right]){
map[node->right] = true;
vec.push_back(node->right->val);
s.push(node->right);
}
}
}
return vec;
}*/
/*不使用map和不改变树结构
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
vector<int> vec;
TreeNode *pCurrent = root;
while(!s.empty() || pCurrent){
if(pCurrent){
vec.push_back(pCurrent->val);
s.push(pCurrent);
pCurrent = pCurrent->left;
}else{
pCurrent = s.top();
s.pop();
pCurrent = pCurrent->right;
}
}
return vec;
}*/
/*
vector<int> preorderTraversal(TreeNode* root){
vector<int> vec;
if (root == nullptr) return vec;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
root = st.top();
st.pop();
vec.push_back(root->val);
if (root->right != nullptr) st.push(root->right);
if (root->left != nullptr) st.push(root->left);
}
return vec;
}
*/
/*
递归遍历
vector<int> preorderTraversal(TreeNode* root, vector<int>& vec){
if(!root){
return vec;
}
vec.push_back(root->val);
preorderTraversal(root->left, vec);
preorderTraversal(root->right, vec);
return vec;
}
*/
};
前序遍历二叉树
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在前文数据结构:二叉树的原理及java实现中,我们已经了解了二叉树的原理及二叉树的三种遍历方式,假设父节点是N,左...
- 最近看了一下大学的数据结构,🈶学到了以前没学到的东西看到了二叉树那一块,感觉二叉树是个很重要的东西,就看了一下底层...
- 题目 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 样例给出中序遍历:[1,...
- 想去过精致的生活,却又不愿意去努力,总是借口说被什么什么东西绊住手脚,其实不过是因为懒惰害怕付出罢了。 想去大城市...