Binary Tree Preorder Traversal (leetcode 144)

原创 2015年07月10日 19:24:27

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?

Show Tags
Show Similar Problems


可以递归,可以用栈

/**
 * 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) {
        if (root == NULL) {
            return vector<int>();
        }
        vector<int> a;
        a.push_back(root->val);
        vector<int> l = preorderTraversal(root->left);
        vector<int> r = preorderTraversal(root->right);
        a.insert(a.end(), l.begin(), l.end());
        a.insert(a.end(), r.begin(), r.end());
        return a;
    }
};

// 非递归

/**
 * 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> a;
        if (root == NULL) {
            return a;
        }
        stack<TreeNode*> s;
        s.push(root);
        while(!s.empty()) {
            TreeNode* r = s.top();
            s.pop();
            a.push_back(r->val);
            if (r->right != NULL) {
                s.push(r->right);
            }
            if (r->left != NULL) {
                s.push(r->left);
            }
        }
        return a;
    }
};

【LeetCode】144 . Binary Tree Preorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年05月22日 23:53
  • 5371

LeetCode(144)Binary Tree Preorder Traversal

题目如下: Given a binary tree, return the preorder traversal of its nodes' values. For example: Given bi...
  • feliciafay
  • feliciafay
  • 2014年01月15日 06:29
  • 1686

LeetCode144 Binary Tree Preorder Traversal(迭代实现) Java

题目: Given a binary tree, return the preorder traversal of its nodes’ values.For example: Given bin...
  • l294265421
  • l294265421
  • 2016年04月23日 13:14
  • 1554

【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...
  • crazy1235
  • crazy1235
  • 2016年06月01日 23:42
  • 5916

LeetCode 105:Construct Binary Tree from Preorder and Inorder Traversal

LeetCode 105: Given preorder and inorder traversal of a tree, construct the binary tree. 给定一个二叉树的...
  • sunao2002002
  • sunao2002002
  • 2015年05月20日 23:09
  • 1045

Binary Tree Preorder Traversal -- LeetCode

原题链接: http://oj.leetcode.com/problems/binary-tree-preorder-traversal/  跟Binary Tree Inorder Travers...
  • linhuanmars
  • linhuanmars
  • 2014年03月18日 03:33
  • 12897

C++详解Leetcode:105. Construct Binary Tree from Preorder and Inorder Traversal

原题思路通过二叉树的前序遍历和中序遍历来构建二叉树,通过递归可以很容易的解决这个问题,在遇到二叉树的问题,应该习惯先画图再来解决code/** * Definition for a binary t...
  • u014265347
  • u014265347
  • 2017年07月30日 17:34
  • 315

Binary Tree Inorder Traversal -- LeetCode

原题链接: http://oj.leetcode.com/problems/binary-tree-inorder-traversal/  通常,实现二叉树的遍历有两个常用的方法:一是用递归,二是使用...
  • linhuanmars
  • linhuanmars
  • 2014年03月01日 05:38
  • 16806

【LeetCode-面试算法经典-Java实现】【105-Construct Binary Tree from Preorder and Inorder Traversal(构造二叉树)】

【106-Construct Binary Tree from Preorder and Inorder Traversal(通过前序和中序遍历构造二叉树)】【LeetCode-面试算法经典-Java...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月09日 06:37
  • 2523

LeetCode 144 — Binary Tree Preorder Traversal(C++ Java Python)

题目:http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ Given a binary tree, return the p...
  • dragon_dream
  • dragon_dream
  • 2014年03月02日 22:13
  • 2508
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Binary Tree Preorder Traversal (leetcode 144)
举报原因:
原因补充:

(最多只允许输入30个字)