[LeetCode] 144. Binary Tree Preorder Traversal

来源:互联网 发布:sql server可视化界面 编辑:程序博客网 时间:2024/06/07 20:11

思路:
第一个就是最简单的递归. 就摆一下. 第二个是题目要求的iterative循环, 用一个栈记录节点即可, 不过push的时候要记得先push右边再push左子树, 这样才能preorder遍历.

void helper(vector<int>& res, TreeNode* root) {    if (! root) return;    res.push_back(root->val);    helper(res, root->left);    helper(res, root->right);}vector<int> preorderTraversal(TreeNode* root) {    vector<int> res;    helper(res, root);    return res;}
vector<int> preorderTraversal(TreeNode* root) {    vector<int> res;    if (! root) return res;    stack<TreeNode*> stk;    stk.push(root);    while (! stk.empty()) {        TreeNode* cur = stk.top();        stk.pop();        res.push_back(cur->val);        if (cur->right)            stk.push(cur->right);        if (cur->left)            stk.push(cur->left);    }    return res;}
0 0
原创粉丝点击