使用python实现的一个二叉树的实现方式(更新中)
对应letcode--538. Convert BST to Greater Tree
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def convertBST(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
def visit1(root):
if root:
visit1(root.left)
vals.append(root.val)
visit1(root.right)
vals = []
visit1(root)
self.s = 0
def visit2(root):
if root:
visit2(root.right)
self.s += vals.pop()
root.val = self.s
visit2(root.left)
visit2(root)
return root
input_5=TreeNode(5)
input_18=TreeNode(18)
input_all=TreeNode(2)
input_all.left=input_5
input_all.right=input_18
slu_=Solution()
print input_all
t=slu_.convertBST(input_all)
print t
关于二叉树的相关的操作如下
class TreeNode(object):
def __init__(self,data=0,left=0,right=0):
self.data = data
self.left = left
self.right = right
class BTree(object):
def __init__(self,root=0):
self.root = root
def is_empty(self):
if self.root is 0:
return True
else:
return False
def preOrder(self,treenode):
if treenode is 0:
return
print treenode.data
self.preOrder(treenode.left)
self.preOrder(treenode.right)
def inOrder(self,treenode):
if treenode is 0:
return
self.inOrder(treenode.left)
print treenode.data
self.inOrder(treenode.right)
def postOrder(self,treenode):
if treenode is 0:
return
self.postOrder(treenode.left)
self.postOrder(treenode.right)
print treenode.data
n1 = TreeNode(data=1)
n2 = TreeNode(2,n1,0)
n3 = TreeNode(3)
n4 = TreeNode(4)
n5 = TreeNode(5,n3,n4)
n6 = TreeNode(6,n2,n5)
n7 = TreeNode(7,n6,0)
n8 = TreeNode(8)
root = TreeNode('root',n7,n8)
bt = BTree()
print 'preOrder......'
print bt.preOrder(root)
print 'inOrder......'
print bt.inOrder(bt.root)
print 'postOrder.....'
print bt.postOrder(bt.root)