Я реализовал LCA проблемы двоичного дерева в Leetcode с использованием Python: https://leetcode.com/problems/lowest-co ... nary-tree/
Но я получил ошибку: TypeError: индексы списка должны быть целыми числами или срезами, а не TreeNode. Мне интересно, как мне отслеживать все родительские узлы дерева в массиве self.up 2d в Python.
from collections import defaultdict
import math
class Solution:
def __init__(self):
# self.tin=defaultdict(int)
# self.tout=defaultdict(int)
self.level=[0 for i in range(10**5+1)]
self.logN=math.ceil(math.log(10**5))
self.up=[[TreeNode(-1) for i in range(self.logN + 1)] for j in range(10**5 + 1)]
def dfs(self, root, parent):
# self.tin[root.val]+=1
self.up[root][0]=parent
for i in range(1, self.logN+1):
up[root][i]=up[ up[root][i-1] ][i-1]
if root.left:
self.level[root.left]=self.level[root]+1
dfs(self, root.left, root)
if root.right:
self.level[root.right]=self.level[root]+1
dfs(self, root.right, root)
self.tout[root]+=1
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
self.dfs(root,root)
def is_ancestor(n1, n2):
return self.tin[n1]=self.tout[n2]
def lca(n1, n2):
if self.level[n1]
Подробнее здесь: [url]https://stackoverflow.com/questions/78250064/lca-of-a-binary-tree-implemented-in-python[/url]
Я реализовал LCA проблемы двоичного дерева в Leetcode с использованием Python: https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ Но я получил ошибку: TypeError: индексы списка должны быть целыми числами или срезами, а не TreeNode. Мне интересно, как мне отслеживать все родительские узлы дерева в массиве self.up 2d в Python. [code]from collections import defaultdict import math class Solution: def __init__(self): # self.tin=defaultdict(int) # self.tout=defaultdict(int) self.level=[0 for i in range(10**5+1)] self.logN=math.ceil(math.log(10**5)) self.up=[[TreeNode(-1) for i in range(self.logN + 1)] for j in range(10**5 + 1)]
def dfs(self, root, parent): # self.tin[root.val]+=1 self.up[root][0]=parent for i in range(1, self.logN+1): up[root][i]=up[ up[root][i-1] ][i-1] if root.left: self.level[root.left]=self.level[root]+1 dfs(self, root.left, root) if root.right: self.level[root.right]=self.level[root]+1 dfs(self, root.right, root) self.tout[root]+=1
Вопрос не в том, как, а в том, почему.
BST эффективно помогают CRUD, нужно ли нам жестко кодировать BST на языке программирования при хранении данных в базе данных?
Например , рассмотрим Django + Postgresql, модели в среде Django автоматически...
Привет, мне в основном нужно реализовать рекурсивную функцию для введения двоичного дерева. Я уже реализовал кусок функции вставки (он самый большой или меньший, чем корень), но есть аспект путаницы.
public void insert(E data) {
root =...
Привет, мне в основном нужно реализовать рекурсивную функцию для введения двоичного дерева. Я уже реализовал кусок функции вставки (он самый большой или меньший, чем корень), но есть аспект путаницы.
public void insert(E data) {
root =...
Привет, мне в основном нужно реализовать рекурсивную функцию для введения двоичного дерева. Я уже реализовал кусок функции вставки (он самый большой или меньший, чем корень), но есть аспект путаницы.
public void insert(E data) {
root =...