Python语言开发PythonComputation(十一)
Python语言开发PythonComputation(十一)
二叉树
自己写了一个简单的二叉树
import random
class Node():
def __init__(self, num):
self.num = num
self.parent = 'xx'
self.left_node = 'xx'
self.right_node = 'xx'
def __str__(self):
return str(self.num)
def handle_node(self, node):
if node.num > self.num:
if self.right_node == 'xx':
self.right_node = node
node.parent = self
else:
self.right_node.handle_node(node)
else:
if self.left_node == 'xx':
self.left_node = node
node.parent = self
else:
self.left_node.handle_node(node)
class Tree():
def __init__(self):
node = Node(50)
self.list = [node]
def add(self, node):
self.list.append(node)
if node.num in self.list:
pass
mother = self.list[0]
mother.handle_node(node)
def __str__(self):
result = ''
for i in self.list:
result = result + str(i) + ','
return result
tree = Tree()
for i in range(10):
randint = random.randint(1, 100)
node = Node(randint)
tree.add(node)
print('---{}'.format(node.parent))
if node.num < node.parent.num:
print(node.num)
else:
print('------{}'.format(node.num))
print('==========')
这是第一次写二叉树
挺有意思
再强化一下打印
import random
class Node():
def __init__(self, num):
self.num = num
self.parent = 'xx'
self.left_node = 'xx'
self.right_node = 'xx'
def __str__(self):
return str(self.num)
def handle_node(self, node):
if node.num > self.num:
if self.right_node == 'xx':
self.right_node = node
node.parent = self
else:
self.right_node.handle_node(node)
else:
if self.left_node == 'xx':
self.left_node = node
node.parent = self
else:
self.left_node.handle_node(node)
def printNode(self):
print('---{}'.format(self.num))
print('{}---{}'.format(self.left_node,self.right_node))
print('==============')
if self.left_node!='xx':
self.left_node.printNode()
if self.right_node!='xx':
self.right_node.printNode()
class Tree():
def __init__(self):
node = Node(50)
self.list = [node]
def add(self, node):
if node.num in self.list:
return
self.list.append(node)
mother = self.list[0]
mother.handle_node(node)
def __str__(self):
result = ''
for i in self.list:
result = result + str(i) + ','
return result
def printTree(tree):
tree.list[0].printNode()
tree = Tree()
for i in range(10):
randint = random.randint(1, 100)
node = Node(randint)
tree.add(node)
print('---{}'.format(node.parent))
if node.num < node.parent.num:
print(node.num)
else:
print('------{}'.format(node.num))
print('==========')
printTree(tree)