开发者

python实现二叉排序树

目录
  • 方法一(粗暴)
  • 方法二(递归)

方法一(粗暴)

#二叉排序树
class BTree():
  def __init__(self,data):
    self.left = None
    self.right = None
    if type(data) == list:
      self.data = data[0]
      for d in data[1:]:
        self.insert(d)
    else:
      self.data = data
  def insert(selfQzqxh,data):
    bt = self
    while True:
      if data <= bt.data:
        if bt.left == None:
          bt.left = BTree(data)
          break
        else:
          bt = bt.left
      else:
        if bt.right == None:
          bt.right = BTree(data)
          break
        else:
          bt = bt.right
  def mid_order(self):
    res = []
    stack = []
    node = self
    while node or stack:
      while node:
        stack.append(node)
        node = node.left
      node = stack.pop()
      res.append(node.data)
      node = node.right
    return res

data = [5,1,2,3,6,8,9]
bt = BTree(data)
print(bt.mid_order())

python实现二叉排序树

方法二(递归)

class TreeNode(object):
  def __init__(self,data):
    self.data = data
    self.left = None
    self.right http://www.cppcns.com= None

class BinaryTree(object):
  def insert(self,root, node):
    if root 编程客栈is None:
      return node
    if node.data < root.data:
      root.left = self.insert(root.left, node)
    else:
      root.right = self.insert(root.right, node)
    return root
  def mid_order(self,root):
    nohttp://www.cppcns.comde = root
  编程客栈  stack = []
    res = []
    while node or stack:
      while node:
        stack.append(node)
        node = node.left
      node = stack.pop()
      res.append(node.data)
      node = node.right
    return res
 
data = [5,1,2,3,6,8,9]
root = TreeNode(data[0])
tree = BinaryTree()
for i in data[1:]:
  tree.insert(root,TreeNode(i))
print(tree.mid_order(root))

python实现二叉排序树

到此这篇关于python实现二叉排序树的文章就介绍到这了,更多相关python二叉排序树内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜