本文主要是介绍Leetcode#144. Binary Tree Preorder Traversal,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:二叉树的先序遍历,打印出结点值,返回一个数组
解题思路:递归实现如下:
C++版本:
class Solution {
public:vector<int> helper(TreeNode* root, vector<int> &r){if(root){r.push_back(root->val);helper(root->left, r);helper(root->right, r);}return r;}vector<int> preorderTraversal(TreeNode* root) {vector<int> ret;return helper(root, ret); }
};
python版本:
class Solution(object):def recursive(self, root, ret):if root != None:ret.append(root.val)self.recursive(root.left, ret)self.recursive(root.right, ret)def preorderTraversal(self, root):ret = []self.recursive(root, ret)return ret
非递归版本要借助于栈,实现如下:
C++版本:
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {vector<int> ret;stack<TreeNode*> s;if(root)s.push(root);while(!s.empty()){TreeNode* temp = s.top();s.pop();ret.push_back(temp->val);if(temp->right)s.push(temp->right);if(temp->left)s.push(temp->left);}return ret;}
};
这篇关于Leetcode#144. Binary Tree Preorder Traversal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!