zoukankan      html  css  js  c++  java
  • 二叉树的前序遍历

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<int> preorderTraversal(TreeNode* root) {
            vector<int> vec;
            preOrder(root, vec);
            return vec;
        }
        //递归写法
        /*
        void preOrder(TreeNode *root, vector<int> &path)
        {
            if (root)
            {
                path.push_back(root->val);
                preOrder(root->left, path);
                preOrder(root->right, path);
            }
        }
        */
        //非递归写法
        void preOrder(TreeNode *root, vector<int> &path)
        {
            stack<TreeNode *> TreeNodeStack;
             
            while (root != NULL || !TreeNodeStack.empty())
            {
                while (root != NULL)
                {
                    path.push_back(root->val);
                    TreeNodeStack.push(root);
                    root = root->left;
                }
                if (!TreeNodeStack.empty())
                {
                    root = TreeNodeStack.top();
                    TreeNodeStack.pop();
                    root = root->right;
                }
            }
        }
    };

     

  • 相关阅读:
    P2018 消息传递[dp]
    P1436 棋盘分割[dp]
    一条线段引发的思考
    浅谈树上差分
    P2680 运输计划[二分+LCA+树上差分]
    P1600 天天爱跑步[桶+LCA+树上差分]
    P4560 [IOI2014]Wall 砖墙
    P1311 选择客栈[模拟]
    P1314 聪明的质监员[二分答案]
    Linux snmp导入MIB库
  • 原文地址:https://www.cnblogs.com/gofighting/p/5411729.html
Copyright © 2011-2022 走看看