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;
                }
            }
        }
    };

     

  • 相关阅读:
    NSHashtable and NSMaptable
    架构的本质:构造定律与结合规则
    软件复用的基础和形式
    架构模式:循环模式、管道模式
    待整理
    functions and closures are reference types-函数和闭包是引用类型
    @autoclosure-可以让表达式自动封装成一个闭包:输入的是一个表达式
    Python 运算符优先级
    Linux下chkconfig命令详解
    Linux下Redis开机自启(Centos)
  • 原文地址:https://www.cnblogs.com/gofighting/p/5411729.html
Copyright © 2011-2022 走看看