leetcode144--二叉树的前序遍历

1. 题意

求二叉树的前序遍历

2. 题解

2.1 递归

比较简单


/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    void pre(TreeNode *root, vector<int> &ans) {
        if ( nullptr == root)
            return;

        ans.emplace_back( root->val );
        pre(root->left, ans );
        pre(root->right, ans );
    }

    vector<int> preorderTraversal(TreeNode* root) {
        
        vector<int> ans;
        pre(root, ans);

        return ans;
    }
};
2.2 迭代

不断递归寻找左节点,再中间节点,最后右节点。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    
    vector<int> preorderTraversal(TreeNode* root) {
        
        stack<TreeNode *> s;
        vector<int> ans;
        
        while ( root || !s.empty()) {

            if (root) {
                s.push(root);
                ans.emplace_back(root->val);
                root = root->left;
                continue;
            }

            root = s.top();
            s.pop();
            root = root->right;

        }

        return ans;
    }
};

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 19:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 19:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 19:30:03       82 阅读
  4. Python语言-面向对象

    2024-04-26 19:30:03       91 阅读

热门阅读

  1. 使用Dokcer中的Mysql导入sql文件

    2024-04-26 19:30:03       29 阅读
  2. 银行卡四要素API接口的验证流程

    2024-04-26 19:30:03       39 阅读
  3. make命令

    2024-04-26 19:30:03       35 阅读
  4. 大华相机C#学习之IStream类

    2024-04-26 19:30:03       28 阅读
  5. mybatis - 取值符号:# 和 $的区别

    2024-04-26 19:30:03       39 阅读
  6. 【动态规划】Leetcode 322. 零钱兑换【中等】

    2024-04-26 19:30:03       25 阅读
  7. 代谢网络模型学习笔记(序章)

    2024-04-26 19:30:03       33 阅读
  8. 设计模式之单例模式

    2024-04-26 19:30:03       31 阅读