使用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)