앞에 있는 체인 테이블과 대기열과 창고로 이루어진 작은 두 갈래 나무
#!/usr/bin/python2
#usage:
# import binarytree
# b = binarytree.Binarytree(5)
# b.append(4)
# b.append(8)
# 5
# / \
# 4 8
# / / \
# 3 7 9
#
# b.delete(4)
# b.dfs(7)
# b.bfs(8)
import stack
import queue
class Node(object):
def __init__(self, root=None, left=None, right=None):
self.root_val = root
self.left = left
self.right = right
class Binarytree(object):
def __init__(self, top_root=None):
self.top_root = Node(top_root)
self.traveral = []
def append(self, item, root=None):
if root == None:
root = self.top_root
if item == root.root_val:
return False
else:
if item > root.root_val:
if root.right != None:
return self.append(item, root.right)
elif root.right == None:
node = Node(item)
root.right = node
return True
else:
return False
elif item < root.root_val:
if root.left != None:
return self.append(item, root.left)
elif root.left == None:
node = Node(item)
root.left = node
return True
else:
return False
def delete(self, item):
pass
def dfs(self, root=None):
if root == None:
root = self.top_root
s = stack.Stack()
s.push(root)
while s.top > 0:
root = s.pop()
self.traveral.append(root.root_val)
if root.right!= None:
s.push(root.right)
if root.left != None:
s.push(root.left)
def bfs(self, root=None):
if root == None:
root = self.top_root
q = queue.Queue()
q.enqueue(self.top_root)
while not q.is_empty():
root = q.dequeue()
self.traveral.append(root.root_val)
if root.left != None:
q.enqueue(root.left)
if root.right != None:
q.enqueue(root.right)
def preorder(self, root=None):
if root == None:
root = self.top_root
self.traveral.append(root.root_val)
if root.left != None:
self.preorder(root.left)
if root.right != None:
self.preorder(root.right)
def inorder(self, root=None):
if root == None:
root = self.top_root
if root.left != None:
self.inorder(root.left)
self.traveral.append(root.root_val)
if root.right != None:
self.inorder(root.right)
def postorder(self, root=None):
if root == None:
root = self.top_root
if root.left != None:
self.postorder(root.left)
if root.right != None:
self.postorder(root.right)
self.traveral.append(root.root_val)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.