Leetcode: Binary Tree Preorder Traversal

思路:

1. 不让用递归, 改用堆栈

2. 堆栈也没必要显示给出, 模拟也是可以的

 

代码: 

class Solution {
public:
    vector<int> preorderTraversal(TreeNode *root) {
		vector<int> res;
		if(root == NULL)
			return res;

		stack<TreeNode*> stc;
		stc.push(root);
		while(!stc.empty()) {
			TreeNode* node = stc.top();
			stc.pop();
			if(node != NULL)
				res.push_back(node->val);
			if(node->right != NULL)
				stc.push(node->right);
			if(node->left != NULL)
				stc.push(node->left);
		}
		return res;
    }
};

  

后记:

写完之后才发现自己画蛇添足了

假如stc 用向量模拟的话, stc 中存储的内容就是前序遍历, 没必须再一个个的放入 res 了, 直接输出 stc 就 OK 了

posted @ 2013-12-05 21:38  SangS  阅读(159)  评论(0编辑  收藏  举报