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

     

  • 相关阅读:
    win10 redis安装教程
    tomcat 最大并发连接数设置
    LeetCode 82 ——删除排序链表中的重复元素 II
    LeetCode 83 —— 删除排序链表中的重复元素
    LeetCode 61——旋转链表
    LeetCode 24——两两交换链表中的节点
    C++ 学习笔记之——文件操作和文件流
    LeetCode 4——两个排序数组中的中位数
    z 变换
    冲激串采样
  • 原文地址:https://www.cnblogs.com/gofighting/p/5411729.html
Copyright © 2011-2022 走看看