[我编写了一个简单的程序,使用python返回树中节点的级别,但未返回任何内容

问题描述 投票:0回答:1
class Node:
def __init__(self,data):
    self.data=data
    self.left=self.right=None
def insert(self,data):
    if self.data:
        if data<self.data:
            if self.left is None:
                self.left=Node(data)
            else:
                self.left.insert(data)
        elif data>self.data:
            if self.right is None:
                self.right=Node(data)
            else:
                self.right.insert(data)
def level(self,data,l):
    if data<self.data:
        if self.left is None:
            return -1
        self.left.level(data,l+1)
    elif data>self.data:
        if self.right is None:
            return -1
        self.right.level(data,l+1)
    elif self.data==data:
        print(l)    

l = [8,7,6,5,10]根=节点(l.pop(0))对于我在l中:root.insert(i)预(根)l = root.level(10,1)打印(l)预期输出为2但返回None

python class tree binary-tree binary-search-tree
1个回答
0
投票
class Node:
  def __init__(self,data):
      self.data=data
      self.left=self.right=None

  def insert(self,data):
    if self.data:
      if data<self.data:
        if self.left is None:
            self.left=Node(data)
        else:
            self.left.insert(data)
      elif data>self.data:
        if self.right is None:
            self.right=Node(data)
        else:
            self.right.insert(data)

  def level(self,data,l):

    if data == self.data:
      level = l
    else:
      if data<self.data:
        if self.left is None:
            return -1
        level = self.left.level(data,l+1)
      elif data>self.data:
        if self.right is None:
            return -1
        level = self.right.level(data,l+1)

    return level

l=[8,7,6,5,10] 
root=Node(l.pop(0)) 
for i in l: 
  root.insert(i) 

print(root.level(8,1))
print(root.level(7,1))
print(root.level(6,1))
print(root.level(5,1))
print(root.level(10,1))

您的函数应该返回一些东西,还需要更新级别。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.