/**
* Given a binary tree, return the preorder traversal of its nodes' values.
* Note: Recursive solution is trivial, could you do it iteratively?
*/
/// Test Unit
/*
* 1
* / \
* 2 3
* /
* 4
* \
* 5
*/
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution
{
public:
Solution(){};
~Solution(){};
vector<int> preorderTraversal(TreeNode* root){
vector<int> res;
stack<TreeNode*> s;
if(!root)
return res;
s.push(root);
while(!s.empty()){
TreeNode* p=s.top();
res.push_back(p->val);
s.pop();
if(p->right) s.push(p->right);
if(p->left) s.push(p->left);
}
return res;
}
};
int main(int argc, char** argv) {
TreeNode root(1);
TreeNode node2(2);
TreeNode node3(3);
TreeNode node4(4);
TreeNode node5(5);
root.left = &node2;
root.right = &node3;
node3.left = &node4;
node4.right = &node5;
Solution s;
for (auto i : s.preorderTraversal(&root))
cout << i << " ";
cout << endl;
return 0;
}
leetcode:Binary Tree Preorder Traversal 先序遍历
最新推荐文章于 2022-03-03 21:24:03 发布
本文介绍了一种不使用递归的方法来完成二叉树节点值的前序遍历。通过栈数据结构实现了迭代式的解决方案,并提供了一个具体的实现示例。此方法避免了递归带来的潜在堆栈溢出风险。
1191

被折叠的 条评论
为什么被折叠?



