[leetcode] Binary Tree Preorder Traversal!

Binary Tree Preorder Traversal!
参考【python实现二叉树】用递归写了下面的代码

[javascript]var result = [];var preorderTraversal = function(root) {    if(root){
        result.push(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
    }    return result;
};

[python]class Solution(object):
    result = []
    def preorderTraversal(self, root):        if root:
            self.result.append(root.val)
            self.preorderTraversal(root.left)
            self.preorderTraversal(root.right)
            # print "self.result=", self.result        return self.result
        
[cpp]class Solution {public:
    vector<int>res;
    vector<int> preorderTraversal(TreeNode *root) {        if(root == NULL) return res;
        res.push_back(root->val);
        res = preorderTraversal(root->left);
        res = preorderTraversal(root->right);        return res;
    }
};

用 python 刷题时,出现错误,但改写成 cpp 后,就通过了...
其实,想问的是:python 与 javascrip 错了?错哪了?


桃花长相依
浏览 744回答 1
1回答

qq_遁去的一_1

Python, leetcode检测一个答案是通过多个测试用例进行测试的, 因此不能把result做成类变量,要把它变成实例变量class&nbsp;Solution(object): &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__init__(self):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result&nbsp;=&nbsp;[]&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;preorderTraversal(self,&nbsp;root):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;root: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.append(root.val)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.preorderTraversal(root.left)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.preorderTraversal(root.right)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self.result
打开App,查看更多内容
随时随地看视频慕课网APP