LintCode【简单】66. 二叉树的前,中,后序遍历。代码及思路

题目要求:

给出一棵二叉树,返回其节点值的前序遍历。

样例

给出一棵二叉树 {1,#,2,3},

   1
    \
     2
    /
   3

 返回 [1,2,3].

思路:

递归遍历。前,中,后序只是顺序改变了一下,前序是a.push_back在两个递归之前,中序是在中间,后序是在之后。

代码:

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */


class Solution {
public:
    /*
     * @param root: A Tree
     * @return: Preorder in ArrayList which contains node values.
     */
     
    vector<int> a;
    void recursion(TreeNode * root){
        if(root == NULL){
            return;
        }
        a.push_back(root->val);
        recursion(root->left);
        recursion(root->right);
    }
    vector<int> preorderTraversal(TreeNode * root) {
        // write your code here
        recursion(root);
        return a;
    }
};


猜你喜欢

转载自blog.csdn.net/limonsea/article/details/79274462