├── tree_funcs.py └── tree_node.py /tree_funcs.py: -------------------------------------------------------------------------------- 1 | """ 2 | File: tree_funcs.py 3 | Author: Xin Li 4 | Purpose: In this program, i will implement a varity of other 5 | functions.This~ 6 | """ 7 | def count(root): 8 | #return the number of node in the tree. 9 | if root is None: 10 | return 0 11 | else: 12 | return count(root.get_left()) + count(root.get_right())+1 13 | def is_bst(root): 14 | ''' 15 | return true if the tree is a BST,empty tree and single note. 16 | False if not. 17 | ''' 18 | 19 | if (count(root)==0) or (count(root)==1): 20 | return True 21 | 22 | if root.get_left() != None: 23 | is_bst(root.get_left()) 24 | if root.get_right() != None: 25 | is_bst(root.get_right()) 26 | if root.get_left() < root.get_val(): 27 | return True 28 | if root.get_right() < root.get_val(): 29 | return True 30 | else: 31 | return False 32 | if root_left != None and max( root_left) > root_val: 33 | return false; 34 | if root_left != None and min( root_left) < root_val: 35 | return false; 36 | if is_bst( root_left)==True or is_bst( root_right)==True: 37 | return false; 38 | ''' 39 | search the tree for the given value. If it is found, 40 | returns the node which contains the value; otherwise, 41 | return None. 42 | ''' 43 | def search(root, val): 44 | if root.get_val() == None: 45 | return None 46 | if root.get_val() == val: 47 | return root 48 | node = None 49 | if root.get_right() is not None: 50 | node = search(root.get_right(), val) 51 | if node is not None : 52 | return node 53 | if root.get_left() is not None: 54 | node = search(root.get_left(), val) 55 | return node 56 | def bst_search(root,val): 57 | if root.get_val() == None: 58 | return None 59 | if root.get_val() == val: 60 | return root 61 | node = None 62 | if root.get_right() is not None: 63 | node = search(root.get_right(), val) 64 | if node is not None : 65 | return node 66 | if root.get_left() is not None: 67 | node = search(root.get_left(), val) 68 | return node 69 | ''' 70 | return a traversal of the values in the tree; the return 71 | value from this function must be an array containing the 72 | values (not the nodes). An empty tree should return an 73 | empty list. 74 | ''' 75 | array1 = [] 76 | def pre_order_traversal(root): 77 | if root: 78 | array1.append(root.val) 79 | pre_order_traversal(root.left) 80 | pre_order_traversal(root.right) 81 | return array1 82 | array2 = [] 83 | def post_order_traversal(root): 84 | if root: 85 | post_order_traversal(root.left) 86 | post_order_traversal(root.right) 87 | array2.append(root.val) 88 | return array2 89 | array3=[] 90 | def in_order_traversal(root): 91 | if root: 92 | in_order_traversal(root.left) 93 | array3.append(root.val) , 94 | in_order_traversal(root.right) 95 | return array3 96 | -------------------------------------------------------------------------------- /tree_node.py: -------------------------------------------------------------------------------- 1 | """ 2 | File: tree_node.py 3 | Author: Xin Li 4 | Purpose: In this program, i will delcare the class TreeNode. 5 | The TreeNode class represents a single node in a binarY tree. 6 | This class may be used to represent either a search tree or 7 | an unordered tree . If this is a BST, then it is the 8 | reponsibility of the "outside" code to make sure that it only 9 | uses BST-compatible functions. 10 | """ 11 | class TreeNode: 12 | def __init__(self,val): 13 | self._left = None 14 | self._right = None 15 | self._value = val 16 | def get_left(self): 17 | return self._left 18 | def get_right(self): 19 | return self._right 20 | def get_val(self): 21 | return self._value 22 | def set_left(self,left): 23 | self._left = left 24 | def set_right(self,right): 25 | self._right = right 26 | def search(self,val): 27 | if self._value == None: 28 | return False 29 | if self._value == val: 30 | return self 31 | node = None 32 | if self._right is not None: 33 | node = self._right.search(val) 34 | if node is not None : 35 | return node 36 | if self._left is not None: 37 | node = self._left.search(val) 38 | return node 39 | def bst_search_loop(self,val): 40 | if self._value == None: 41 | return False 42 | node = self 43 | while node is not None: 44 | if node._value == val: 45 | return node 46 | elif node._value > val: 47 | node = node._left 48 | elif node._value < val: 49 | node = node._right 50 | if node is None: 51 | return None 52 | def bst_insert_loop(self,val): 53 | if self._value == val: 54 | return "NOP" 55 | node = self 56 | tree_node = TreeNode(val) 57 | while node is not None: 58 | if val < node._value : 59 | if node._left is not None: 60 | node = node._left 61 | else: 62 | node._left = tree_node 63 | return 64 | if node._value < val : 65 | if node._right is not None: 66 | node = node._right 67 | else: 68 | node._right = tree_node 69 | return 70 | return 71 | --------------------------------------------------------------------------------