Нахождение глубины бинарного дерева в Python - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь реализовать код python, чтобы найти глубину двоичного дерева. Я успешно реализовал версию C ++, но когда я реализую тот же код в python, он дает другой ответ в Leetcode. Версия C ++:

class Solution {
public:
    int maxDepth(TreeNode* root) {

        if(!root) return 0;
        int l=maxDepth(root->left);
        int r=maxDepth(root->right);
        return 1 + max(l, r); 
    }

Python версия:

class Solution(object):
    def maxDepth(self, root):

        if root is None:
                  return 0           
        self.left=self.maxDepth(root.left)     
        self.right=self.maxDepth(root.right)        
        return max(self.left,self.right) +1

Есть ли принципиальное различие в том, как выполняются рекурсивные вызовы в Python и C ++. Мой код python не работает в следующем случае: [1,2,3,4,5]

1 Ответ

0 голосов
/ 09 января 2020

Ваш код не идентичен. self.left означает, что вы изменяете поле объекта Solution в случае Python (ср. Объяснение переменной python 'self' для начинающего ). Для использования локальных переменных для go используется префикс self.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...