This article mainly introduced the Python implementation of the two-fork tree definition and traversal algorithm, combined with a concrete example of the definition of Python-based two-tree and its common traversal operation implementation skills, the need for friends can refer to the next
In this paper, we describe the two-fork tree definition and traversal algorithm implemented by Python. Share to everyone for your reference, as follows:
Beginner python, you need to implement a decision tree, first of all to implement a binary tree data structure using Python. Make the time to do the processing, to ensure that the establishment of the two-fork tree is a balanced binary tree.
#-*-Coding:utf-8-*-from Collections Import Dequeclass node:def init (self,val,left=none,right=none): Self.val=val Self.left=left Self.right=right #setter and Getter def Get_val (self): return self.val def set_val (self,val): Self.val=val def get_left (self): return self.left def set_left (self,left): Self.left=left def get_right (self): Return self.right def set_right (self,right): Self.right=rightclass tree:def init (self,list): list=sorted (list) Self.root=self.build_tree (list) #递归建立平衡二叉树 def build_tree (self,list): l=0 r=len (list)-1 if (L>R): RE Turn None if (l==r): Return Node (List[l]) mid= (l+r)/2 Root=node (List[mid]) Root.left=self.build_tree (list[ : Mid]) Root.right=self.build_tree (list[mid+1:]) return root #前序遍历 def preorder (self,root): if (Root is None): return print Root.val self.preorder (root.left) self.preorder (root.right) #后序遍历 def postorder (self,root): if (Root is None): REturn Self.postorder (root.left) self.postorder (root.right) print Root.val #中序遍历 def inorder (self,root): if (r Oot is None): Return Self.inorder (root.left) print Root.val self.inorder (root.right) #层序遍历 def levelorder ( Self,root): If root is None:return queue =deque ([root]) while (Len (queue) >0): Size=len (queue) F or I in range (size): Node =queue.popleft () print node.val if node.left are not None:queue.ap Pend (Node.left) If Node.right is not None:queue.append (node.right) list=[1,-1,3,4,5]tree=tree (list) print ' Middle sequence Traversal: ' Tree.inorder (tree.root) print ' sequence traversal: ' Tree.levelorder (tree.root) print ' Pre-sequence traversal: ' Tree.preorder (tree.root) print ' Post-post traversal: ' Tree.postorder (Tree.root)
Output:
Middle sequence traversal-11345 sequence traversal 3-1415 pre-sequence Traversal 3-1145 post-order traversal 1-1543
Build the two-fork tree as shown: