Python 如何在Django中显示和存储二进制搜索树

Python 如何在Django中显示和存储二进制搜索树,python,django,django-models,django-views,binary-tree,Python,Django,Django Models,Django Views,Binary Tree,我已经为二进制搜索树编写了程序,但不知道如何将其保存在Django数据库中。如何将其存储在模型中: from __future__ import print_function class Node: # Constructor to initialize data # If data is not given by user,its taken as None def __init__(self, data=None, left=None, right=None): self.da

我已经为二进制搜索树编写了程序,但不知道如何将其保存在Django数据库中。如何将其存储在模型中:

from __future__ import print_function

class Node:

# Constructor to initialize data
# If data is not given by user,its taken as None 
def __init__(self, data=None, left=None, right=None):
    self.data = data
    self.left = left
    self.right = right

# __str__ returns string equivalent of Object
def __str__(self):
    return "Node[Data = %s]" % (self.data,)

class BinarySearchTree:
def __init__(self):
    self.root = None
在二叉搜索树中插入值时,我们首先检查该值是否大于、小于或等于树的根。我们将当前节点初始化为根节点。如果该值大于当前节点值,则我们知道它的正确位置将位于正确的子树中。因此,我们将当前元素作为正确的节点。 如果该值小于当前节点值,则我们知道其右位置将位于左子树中。因此,我们将当前元素作为左节点。 如果该值等于当前节点值,则我们知道该值已包含在树中,不需要重新插入。所以我们打破了循环

 def insert(self, val):
    if (self.root == None):
        self.root = Node(val)
    else:
        current = self.root

        while 1:
            if (current.data > val):
                if (current.left == None):
                    current.left = Node(val)
                    break
                else:
                    current = current.left

            elif (current.data < val):
                if (current.right == None):
                    current.right = Node(val)
                    break
                else:
                    current = current.right

            else:
                break
在顺序遍历中,我们首先移动到左子树,然后打印当前元素,最后移动到右子树

#Important : Inorder traversal returns the elements in sorted form.
def inorder(self, node):
    if (node == None):
        return
    else:
        self.inorder(node.left)
        print(node.data, end=" ")
        self.inorder(node.right)
在后序遍历中,我们首先移动到左子树,然后移动到右子树,最后打印当前元素

def postorder(self, node):
    if (node == None):
        return
    else:
        self.postorder(node.left)
        self.postorder(node.right)
        print(node.data, end=" ")

tree = BinarySearchTree()
tree.insert(1)
tree.insert(9)
tree.insert(4)
tree.insert(3)
tree.insert(5)
tree.insert(7)
tree.insert(10)
tree.insert(0)
print ("Preorder Printing")
tree.preorder(tree.root)
print("\n\nInorder Printing")
tree.inorder(tree.root)
print("\n\nPostOrder Printing")
tree.postorder(tree.root)
用户可以添加和删除树,在添加树时,应提示用户输入至少3个节点。。。 选择树时,应显示二叉搜索树结构及其 按插入顺序排列的各个节点。。。。。
如何将用户所做的所有更改反映回数据库中。

显示意味着gui???@Jainil Patel Yes gui这是什么意思,就像有许多gui显示的树一样,具有像这样的/\\/边的树和连接的节点??可以,但我如何将其存储在数据库中??显示意味着gui???@Jainil Patel是gui这意味着什么像具有许多gui显示的树、具有像这样的/\\/边的树和连接的节点??可以,但我如何将其存储在数据库中??
def postorder(self, node):
    if (node == None):
        return
    else:
        self.postorder(node.left)
        self.postorder(node.right)
        print(node.data, end=" ")

tree = BinarySearchTree()
tree.insert(1)
tree.insert(9)
tree.insert(4)
tree.insert(3)
tree.insert(5)
tree.insert(7)
tree.insert(10)
tree.insert(0)
print ("Preorder Printing")
tree.preorder(tree.root)
print("\n\nInorder Printing")
tree.inorder(tree.root)
print("\n\nPostOrder Printing")
tree.postorder(tree.root)