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

     

  • 相关阅读:
    (转)乐观的并发策略——基于CAS的自旋
    mysql避免插入重复数据
    Java_Web使用简单的批处理操作
    Java中jar命令详解
    使用文档注释(javadoc)
    APP和WEB元素定位方法
    RF(二)RF常用库介绍
    RF(一)RF的安装步骤
    javascript匿名函数及闭包深入理解及应用
    javascript简介
  • 原文地址:https://www.cnblogs.com/gofighting/p/5411729.html
Copyright © 2011-2022 走看看