zoukankan      html  css  js  c++  java
  • LeetCode Binary Tree Preorder Traversal

    Problem Description

    Given a binary tree, return the preorder traversal of its nodes' values.

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [1,2,3].

    Note: Recursive solution is trivial, could you do it iteratively?

    Problem Solution

    递归&非递归方案

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    private:
        vector<int> retVec; // the traversal sequence of output
    public:
        void recursiveTraverse(TreeNode *root){
            if(root == NULL)
                return;
            retVec.push_back(root->val);
            recursiveTraverse(root->left);
            recursiveTraverse(root->right);
        }
        void iterTraverse(TreeNode *root){
            if(root==NULL)
                return;
            stack<TreeNode*> st;
            TreeNode* temp;
            st.push(root);
            while(!st.empty())
            {
                temp=st.top();
                retVec.push_back(temp->val);
                st.pop();
                if(temp->right!=NULL)
                    st.push(temp->right);
                if(temp->left!=NULL)
                    st.push(temp->left);
                
            }
        }
        vector<int> preorderTraversal(TreeNode *root) {
         //   recursiveTraverse(root);
            iterTraverse(root);
            return retVec;
        }
    };
  • 相关阅读:
    zbb20180930 Postman 使用方法详解
    Cookie、Session、jsp、EL、JSTL
    Http协议、Tomcat、servlet
    xml、网络编程、 反射
    JDBC、DBUtils
    Java IO流对象、多线程
    mySql
    Java基础
    VueJs
    GIT
  • 原文地址:https://www.cnblogs.com/ballwql/p/3671001.html
Copyright © 2011-2022 走看看