我不确定为什么我在计算二叉搜索树的高度时得到 None
I'm not sure why i am getting None when calculating height of a binary search tree
这是 class 节点和 class BinarySearchTree
的 class 定义
class Node:
def __init__(self, val=None):
self.val = val
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
我的插入函数如下所示:
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(self.root, value)
def _insert(self, curr_node, val):
if val < curr_node.val:
if curr_node.left is None:
curr_node.left = Node(val)
else:
self._insert(curr_node.left, val)
elif val > curr_node.val:
if curr_node.right is None:
curr_node.right = Node(val)
else:
self._insert(curr_node.right, val)
else:
print('Value already exist')
这是我的身高函数:
def height(self):
if self.root is None:
return 0
else:
self._height(self.root, 0)
def _height(self, curr, height):
if curr is None:
return height
left_height = self._height(curr.left, height+1)
right_height = self._height(curr.right, height + 1)
return max(left_height, right_height)
当我调用高度函数时,我得到 None 作为结果
def height(self):
if self.root is None:
return 0
else:
self._height(self.root, 0)
应该是
def height(self):
if self.root is None:
return 0
else:
return self._height(self.root, 0)
这是 class 节点和 class BinarySearchTree
的 class 定义class Node:
def __init__(self, val=None):
self.val = val
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
我的插入函数如下所示:
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(self.root, value)
def _insert(self, curr_node, val):
if val < curr_node.val:
if curr_node.left is None:
curr_node.left = Node(val)
else:
self._insert(curr_node.left, val)
elif val > curr_node.val:
if curr_node.right is None:
curr_node.right = Node(val)
else:
self._insert(curr_node.right, val)
else:
print('Value already exist')
这是我的身高函数:
def height(self):
if self.root is None:
return 0
else:
self._height(self.root, 0)
def _height(self, curr, height):
if curr is None:
return height
left_height = self._height(curr.left, height+1)
right_height = self._height(curr.right, height + 1)
return max(left_height, right_height)
当我调用高度函数时,我得到 None 作为结果
def height(self):
if self.root is None:
return 0
else:
self._height(self.root, 0)
应该是
def height(self):
if self.root is None:
return 0
else:
return self._height(self.root, 0)