LeetCode 144 Binary Tree Preorder Traversal

二叉树的前序遍历

标签:二叉树LeetCode发布于:编辑于:浏览量:46

概述

https://leetcode.com/problems/binary-tree-preorder-traversal/

递归法

class Solution {
public:
    vector<int> ans;
    vector<int> preorderTraversal(TreeNode* root) {
        helper(root);
        return ans;
    }
    
    void helper(TreeNode* root) {
        if (!root) return;
        ans.push_back(root->val);
        helper(root->left);
        helper(root->right);
    }
};

迭代法

迭代法?迭代谁?我们肯定要迭代某种数据结构。

堆栈比较合适。

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> ans;
        stack<TreeNode*> s;
        s.push(root);
        while (!s.empty()) {
            auto n = s.top();
            s.pop();
            if (!n) continue;
            ans.push_back(n->val);
            s.push(n->right);
            s.push(n->left);
        }
        return ans;
    }
};